如果 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 中的数据。这会强制过滤数据。
我在 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 中的数据。这会强制过滤数据。