如果 ON 条件在 mysql 中没有匹配数据,如何获取 NULL

How to get NULL if ON condition do not have matching data in mysql

我在 mysql 中有 2 个 table。我想加入他们,但即使没有来自 2nd table 的匹配数据,我也需要显示 NULL 但加入他们。

table1

id  |  name
-----------
1   |  name1
2   |  name2
3   |  name3

第二个table

table2

id  |  service |  amount
------------------------
1   |  service1 |  10
2   |  service2 |  20
3   |  service1 |  20
4   |  service3 |  10

我需要的输出是,

output

name  | amount
--------------
name1 | 10
name2 | NULL
name3 | 20

我试过以下查询

SELECT t1.name,t2.amount 
FROM table1 t1  
LEFT JOIN table2 t2 ON t1.id = t2.id 
WHERE t2.service=1

但它不会 return name2 因为在第二个 table 中没有匹配的 id。我该怎么做?

您的 where 子句将您的 left join 变成 inner join*。将条件放在 join

ON 子句中
SELECT t1.name,t2.amount 
FROM table1 t1  
LEFT JOIN table2 t2 ON t1.id = t2.id 
                   AND t2.service = 1

* 您在 where 子句中过滤加入的 table 中的数据。这会强制过滤数据。