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

时间:2016-02-19 04:26:10

标签: php sql database mysqli multilingual

表主:

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

1 个答案:

答案 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自己测试过。)