列连接以合并值

时间:2015-01-09 18:34:28

标签: mysql sql

我有一张包含语言术语的表格。

VAR   |  EN  |   ES   |  FR
---------------------------
CR   |  car | coche  | voiture

默认为英语,它包含所有条款,但是其他一些语言,如法语西班牙语,可能会缺少条款。我需要运行一个查询并根据语言将这些术语放入一个数组中,但如果缺少该语言中的术语,我需要使用相应的英语术语,而不是空白值。

我在考虑以下几点:

SELECT * 
FROM terms
WHERE lang = "ES"

但是我需要所有的VAR,而且我不知道如何以这种方式拉动它们......只是心理障碍,可能需要更多的咖啡......

2 个答案:

答案 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