我正在为一个多语言网站设计数据库。我想使用以下流行的方法:
postid | post_title | lang
------------------------------
1 | title1 | en
1 | title2 | fr
2 | title3 | en
当我更改语言时,我会运行查询以获取类似
的帖子select post_title from post where lang = "en" group by postid
postid | post_title | lang
------------------------------
1 | title1 | en
2 | title3 | en
select post_title from post where lang = "fr" group by postid
postid | post_title | lang
------------------------------
1 | title2 | fr
问题是如果我想要一个给我这样的结果的查询
postid | post_title | lang
------------------------------
1 | title2 | fr
2 | title3 | en
意味着如果我没有收到fr 语言的帖子,那么我应该得到默认的en 语言帖子。
最佳答案
此查询将返回 lang
= "fr"
或 lang
= "en"
的行如果在 "fr"
中没有找到相应 postid
的记录。
SELECT
*
FROM post AS a
WHERE
a.lang = "fr"
OR (
a.lang = "en"
AND (
SELECT COUNT(*)
FROM post AS b
WHERE
b.lang = "fr"
AND b.postid = a.postid
) = 0
)
GROUP BY a.postid
这种尝试有效,但我不知道这是否是实现它的最佳方法。
关于php - 如何获取默认值的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51377082/