mysql - 按列中的值显示列中的值

mysql - displaying values from columnA by values in columnB

我正在尝试在 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。如有任何帮助,我们将不胜感激!

**注意:我意识到会有更好的方法来组织这些表格以简化此操作。 las,我不控制数据库 structure/schemas.

您几乎就在那里,JOIN 之后发生的 WHERE(大部分):

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'
;

table 结构对我来说没有什么特别糟糕的地方。