我正在尝试在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
(无论它实际是什么,实际上可以为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 1
和3
。这里的任何帮助将不胜感激!
**注意:我意识到有更好的方法可以组织这些表格来简化这一过程。唉,我不控制db结构/模式。
答案 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'
;
并没有任何表格结构对我来说都很糟糕。