我有两张桌子:
Table a:
+----+------+
| id | data |
+----+------+
| 1 | 450 |
| 2 | 500 |
| 3 | 550 |
| 4 | 600 |
| 5 | 650 |
+----+------+
Table b:
+----+------+------+
| id | a_id | note |
+----+------+------+
| 1 | 2 | 25 |
| 2 | 5 | 10 |
+----+------+------+
我需要一个返回一个表的查询,该表包含来自table a
的每一行和来自table b
的注释。我希望0
填写一行中没有注释的地方。我希望它看起来像这样:
+----+------+------+
| id | data | note |
+----+------+------+
| 1 | 450 | 0 |
| 2 | 500 | 25 |
| 3 | 550 | 0 |
| 4 | 600 | 0 |
| 5 | 650 | 10 |
+----+------+------+
我该怎么做?
答案 0 :(得分:1)
select a.id, a.data, coalesce(b.note, 0) as note
from a
left join b on a.id = b.a_id
答案 1 :(得分:0)
你在寻找什么称为LEFT / RIGHT JOIN。 This问题将为您提供有关其内容的更多详细信息。
假设您有一个类似的查询:
SELECT * FROM a LEFT JOIN b ON some_condition;
然后,它的输出将包含表a中的每一行,以及满足条件的表b中的数据。对于不满足条件的行,包含b数据的列将包含null。