我有一张包含语言术语的表格。
VAR | EN | ES | FR
---------------------------
CR | car | coche | voiture
默认为英语,它包含所有条款,但是其他一些语言,如法语西班牙语,可能会缺少条款。我需要运行一个查询并根据语言将这些术语放入一个数组中,但如果缺少该语言中的术语,我需要使用相应的英语术语,而不是空白值。
我在考虑以下几点:
SELECT *
FROM terms
WHERE lang = "ES"
但是我需要所有的VAR,而且我不知道如何以这种方式拉动它们......只是心理障碍,可能需要更多的咖啡......
答案 0 :(得分:2)
您可以这样使用IFNULL功能:
SELECT var, IFNULL(es, en) FROM terms
因此,如果es
中的值为null,则会返回en
。
另一种选择是更通用的COALESCE函数:
SELECT var, COALESCE(fr, es, en) from terms
只返回列表的第一个非null值(如果你想处理一系列后备值)。
答案 1 :(得分:1)
我没有在我面前查看MySQL的副本,但我会尝试:
SELECT var,
en,
CASE WHEN es IS NULL THEN en ELSE es END as 'es_or_en',
CASE WHEN fr IS NULL THEN en ELSE fr END as 'fr_or_en'
FROM terms