表主:
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 german description(de
)的MAIN_LNG.desc
行,但如果此描述为NULL
,则会自动选择en
这是主要的语言。
我怎样才能使用纯SQL
?
答案 0 :(得分:1)
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'
(Haven自己测试过。)