表 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'
(我自己还没有测试过。