【发布时间】:2015-07-17 17:34:37
【问题描述】:
我正在尝试在 MySql 中创建一个查询,该查询连接两个表并显示两者的值。
表A:
id | value
----------
1 | 123
2 | 456
3 | 789
表B:
id | key | value | type
-----------------------
1 | 1 | 10 | 'A'
2 | 1 | 11 | 'B'
3 | 2 | 12 | 'A'
4 | 2 | 13 | 'B'
5 | 2 | 14 | 'C'
6 | 3 | 15 | 'A'
7 | 3 | 16 | 'B'
这些表在TableA.id = TableB.key 上连接。我想显示TableA.id、TableB.value - 但是我只关心来自C 类型的TableB 中的值。如果没有“C”类型条目,那么我想显示null(不管它到底是什么,实际上可以是空的,或者只是一个说“空”的字符串)。对于上面的例子,我希望结果是:
ID | Value
----------
1 | null
2 | 14
3 | null
到目前为止,我还没有想出任何东西——我尝试过的所有东西要么没有获取任何数据,要么显示太多。我在概念上最接近的是:
select TA.id as 'ID', TB.value as 'Value'
from TableA TA
left join TableB TB on TA.id = TB.key
where TB.type = 'C';
但这只会导致:
ID | Value
----------
2 | 14
并且会省略 ID 的 1 和 3。如有任何帮助,我们将不胜感激!
**注意:我意识到有更好的方法来组织这些表以使其变得容易。唉,我不控制数据库结构/模式。
【问题讨论】:
标签: mysql left-join inner-join