用于获取特定语言行的 SQL 查询(使用默认语言)
Posted
技术标签:
【中文标题】用于获取特定语言行的 SQL 查询(使用默认语言)【英文标题】:SQL query for fetching rows in certain language (with default lang) 【发布时间】:2011-04-17 16:11:04 【问题描述】:我有一张带有城市的表格:
city_id 姓名 语言代码样本数据(city_id、名称、语言代码):
1, LondonName, en 1, LondonName, de 1, LondonName123, jp 2, 巴塞罗那, zh 2, Barcelona123, de, 3, 马德里, zh如何获取某种语言(即 de)的所有城市,但如果没有该语言的城市翻译,我想获取该行的默认语言(即英语)的翻译。
所以,语言代码“de”的结果应该是这样的:
1, LondonName, de 2,巴塞罗那123,德 3, 马德里, zh数据库:mysql
【问题讨论】:
也许这可以工作 从 languagecode='de' OR (languagecode != 'de' AND languagecode='en') 的城市中选择 *。 @Ravin:您的尝试不会显示 OP 的要求。它将显示“de”和“en”行。 【参考方案1】:我通常更喜欢使用 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
【讨论】:
+1 @Galz:很好。您可以使用COALESCE()
代替IF
和IS NULL
。
@ypercube - 正确,我需要将此功能添加到我的个人工具箱中... :) 谢谢!以上是关于用于获取特定语言行的 SQL 查询(使用默认语言)的主要内容,如果未能解决你的问题,请参考以下文章