【发布时间】:2011-11-27 23:43:05
【问题描述】:
表items的key由(lang, id)组成。有些项目有不同语言的翻译名称。我想创建这样一个查询,该查询将以给定语言从数据库中返回所有项目,并且如果项目没有翻译以返回未翻译的值。
假设我想获取用保加利亚语书写的所有项目。这就是我卡住的地方:
SELECT lang, id, name
FROM items
WHERE lang = "bg" OR lang = "en"
GROUP BY id
当有一个项目(1,“en”)和一个项目(1,“bg”)。 id是一样的。那么 MySQL 或 SQLite 如何确定返回哪个结果呢?有什么办法可以告诉它我宁愿返回 (1, "bg") 如果它存在但如果它不存在则 ( 1, "en") 会满足我吗?
附言 为了进一步说明我想要什么,让我们假设数据库包含以下带有架构(id、lang、name)的条目:
(1, "en", "abc")
(2, "en", "cde")
(3, "en", "def")
(1, "bg", "абв")
(3, "bg", "жзи")
执行保加利亚语所需的查询后,我应该得到:
(1, "bg", "абв")
(2, "en", "cde")
(3, "bg", "жзи")
【问题讨论】: