mysql - 通过columnB中的值显示columnA中的值

时间:2015-07-17 17:34:38

标签: mysql left-join inner-join

我正在尝试在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.idTableB.value - 但我只关心来自类型C的TableB的值。如果没有类型'C'条目,那么我想显示null(无论它实际是什么,实际上可以为null或只是一个字符串'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 13。这里的任何帮助将不胜感激!

**注意:我意识到有更好的方法可以组织这些表格来简化这一过程。唉,我不控制db结构/模式。

1 个答案:

答案 0 :(得分:1)

你几乎就在那里,在JOIN之后发生了一些事情(主要是):

SELECT TA.id AS 'ID', TB.value AS 'Value'
FROM TableA AS TA
LEFT JOIN TableB TB AS TA.id = TB.key AND TB.type = 'C'
;

并没有任何表格结构对我来说都很糟糕。