MySQL,从不同的表中选择...如果

标签 mysql sql

我有一个小麻烦,因为很久以前我研究过数据库和查询。

例如,我将有两个用于 cd:s 的表,一个包含数据,另一个包含替代翻译。 在 CD 表中我有原始语言,它看起来像这样

Table for CDs (cds):
id  |  name  | language
-----------------------
1   |  aaa   | en
2   |  bbb   | en
3   |  ccc   | fi

Table for languages (languages):
cd_id | language | name
-----------------------
1     | fi       | AAA
1     | de       | AAACHTUNG
3     | en       | CCC

现在,我想获得所有这些 cd:s,例如德语,如果没有翻译,我希望它是原始语言...

编辑: 德语 = de

因为只有一个德文译本(在 CD #1 上),我希望 cd 2 和 3 的原名..在这种情况下是英语和芬兰语...

我该怎么做?

编辑 2: 在这种情况下,当我要求“de”时,我会得到:

AAACHTUNG
bbb
ccc

如果我要求'en',我会得到

aaa
bbb
CCC

等等……

最佳答案

这应该可以解决问题(SQL Fiddle):

select coalesce(l.name, c.name)
from cds c
left join languages l on l.cd_id = c.id
                         and l.language = 'de';

关于MySQL,从不同的表中选择...如果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13312506/

相关文章:

MySQL 每个项目的计数

MySQL SELECT 函数求和当前数据

sql - 如何在 SQL 中查找作为子字符串的 int 值的 MIN 和 MAX?

php - 使用php从表中删除行的函数

php - 为什么 R::Store 不返回任何东西并在 redbeanphp 中崩溃?

stored-procedures - 计算部分和的 MySQL 查询

mysql - 内连接仅返回第一个匹配的行

javascript - Ajax/Jquery - 获取提交表单响应的记录

mysql - 我在哪里可以下载 mysql jdbc jar?

MYSQL查询: group by entries per date and count entries