如果语言行为 emty,MySQL 多语言选择主语言行


MySQL multilanguage select main language row if language row is emty

表 MAIN:

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')

现在我想选择带有德语描述(MAIN_LNG.desc)的de行,但是如果此描述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'     

(我自己还没有测试过。