主表:
id | main1
表 MAIN_LNG:
id | id_main | lng | desc
查询:
SELECT MAIN.*, MAIN_LNG.desc
FROM MAIN
JOIN MAIN_LNG
ON MAIN.id = MAIN_LNG.id_main
AND MAIN_LNG.lng = IFNULL('de', 'en')
现在我想选择带有德语描述的 de
行 (MAIN_LNG.desc
),但如果此描述为 NULL
则自动选择作为主要语言的 en
。
如何使用纯 SQL
来实现?
最佳答案
COALESCE()函数返回其参数中的第一个非 NULL 值。我们所要做的就是在这里给“de”一个优先权。
SELECT MAIN.*, COALESCE(de.desc, en.desc) AS desc
FROM MAIN
LEFT JOIN MAIN_LNG AS de ON MAIN.id = MAIN_LNG.id_main
AND MAIN_LNG.lng = 'de'
LEFT JOIN MAIN_LNG AS en ON MAIN.id = MAIN_LNG.id_main
AND MAIN_LNG.lng = 'en'
(自己没测试过。)
关于php - MySQL多语言选择语言行的主语言行为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35497293/