我在 mysql 数据库中有一个表。喜欢
+-----+------+------+--------+
| id | p_id | lang | title |
+-----+------+------+--------+
| 1 | 1 | en | eng1 |
| 2 | 1 | fr | fr1 |
| 3 | 2 | en | eng2 |
+-----+------+------+--------+
我想选择 lang
= fr
的 P_id
记录。如果任何 p_id 在 fr
中没有记录,则选择 en
的记录。
喜欢
+-----+------+------+--------+
| id | p_id | lang | title |
+-----+------+------+--------+
| 2 | 1 | fr | fr1 |
| 3 | 2 | en | eng2 |
+-----+------+------+--------+
这可能吗?
我正在使用 PHP、MySQL 和 Joomla。
编辑: 1 : 每个 p_id 可以有超过 2 行,有 diff lang,比如 p_id = 1
+-----+------+------+--------+
| id | p_id | lang | title |
+-----+------+------+--------+
| 1 | 1 | en | eng1 |
| 2 | 1 | fr | fr1 |
| 3 | 2 | en | eng2 |
| 4 | 1 | de | de1 |
+-----+------+------+--------+
2 : 可以保证每个 p_id 在 lang = en-GB 中都有一个 raw
最佳答案
Mysql 查询(未测试)
SELECT DISTINCT a.p_id
FROM myTable a
WHERE a.lang = 'fr'
UNION
SELECT DISTINCT b.p_id
FROM myTable b
WHERE b.lang = 'en'
AND NOT EXISTS
(
SELECT 1
FROM myTable c
WHERE c.lang = 'fr'
AND c.p_id = b.p_id
)
我取出所有的 fr 行,然后在不存在 fr 行的地方添加所有的 en。
关于mysql - 如果列有值 A,如何获取记录,如果没有则为 B?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27058108/