【问题标题】:MySQL multilanguage select main language row if language row is emtyMySQL多语言选择主语言行语言行为空
【发布时间】:2016-02-19 04:26:09
【问题描述】:

主表:

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怎么办?

【问题讨论】:

    标签: php sql database mysqli multilingual


    【解决方案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'     
    

    (我自己没有测试过。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-20
      • 1970-01-01
      • 2010-12-19
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 2020-03-30
      • 1970-01-01
      相关资源
      最近更新 更多