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.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
。如有任何帮助,我们将不胜感激!
**注意:我意识到会有更好的方法来组织这些表格以简化此操作。 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 结构对我来说没有什么特别糟糕的地方。
我正在尝试在 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
。如有任何帮助,我们将不胜感激!
**注意:我意识到会有更好的方法来组织这些表格以简化此操作。 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 结构对我来说没有什么特别糟糕的地方。