用于获取特定语言行的SQL查询(使用默认语言)

时间:2011-04-17 16:11:05

标签: mysql sql

我有一张有城市的桌子:

  • city_id
  • 名称
  • 语言代码

示例数据(city_id,名称,语言代码):

  • 1,LondonName,en
  • 1,LondonName,de
  • 1,LondonName123,jp
  • 2,Barcelona,en
  • 2,Barcelona123,de,
  • 3,Madrid,en

如何获取特定语言的所有城市(即de),但如果没有该语言的城市翻译,我希望以默认语言(即英语)为该行提取翻译。

因此,语言代码“de”的结果应该是这样的:

  • 1,LondonName,de
  • 2,Barcelona123,de
  • 3,Madrid,en

数据库:MySQL

1 个答案:

答案 0 :(得分:2)

我通常更喜欢使用JOIN而不是内部选择,所以这是第二个选项:

SELECT c.city_id,
IF(c2.name IS NULL,c.name,c2.name) 'name',
IF(c2.languagecode IS NULL, c.languagecode, c2.languagecode) 'languagecode'
FROM cities c
LEFT JOIN cities c2 ON c.city_id = c2.city_id AND c2.languagecode = 'de'
WHERE c.languagecode = 'en'
GROUP BY c.city_id