我有一张这样的 table
ID Type
--- -------
1 17
2 18
3 18
10 16
还有第二张这样的 table
ID Month
--- -------
1 Feb
2 Feb
3 Feb
4 Feb
我想选择第二个表中的所有内容并将其与第一个表中的类型匹配。如果它在第一个表中没有匹配的 ID,我仍然想显示它。
现在我正在做这个查询
select t2.id, t2.month, t1.type
from t2, t1
where t1.id = t2.id
它给了我这个结果
ID MONTH TYPE
1 Feb 17
2 Feb 18
3 Feb 18
但我想要的是这个结果
ID MONTH TYPE
1 Feb 17
2 Feb 18
3 Feb 18
4 Feb 0
我怎样才能写出一个 SQL 语句来得到上面的结果?
SQL fiddle :http://sqlfiddle.com/#!2/c90f5/1
最佳答案
您只需要使用 LEFT JOIN
——我还使用了 COALESCE
来为类型返回 0——您也可以使用 IFNULL
:
SELECTt2.id, t2.month, COALESCE(t1.type,0) type
FROM t2 LEFT JOIN t1
ON t1.id = t2.id
关于mysql - SQL从2个表中选择,其中键不在1个表的某些行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15004731/