mysql - SQL从2个表中选择,其中键不在1个表的某些行中

标签 mysql sql

我有一张这样的 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 

Updated Fiddle

关于mysql - SQL从2个表中选择,其中键不在1个表的某些行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15004731/

相关文章:

php - 使用哈希将不受信任的输入转换为受信任的输入

mysql - 获取分组计数,但仍显示mysql中的所有记录

java - 如何在java中使用 vector 定义表模型

mysql - 使用选择子查询的更新查询与使用内连接的更新查询之间的区别

php - 通过Android App注册时Mysql查询出错

mysql - 如何让这个查询变得高效?

java - PreparedStatement 在 oracle 中执行成功但在 Microsoft SQL 中抛出异常

mysql - 使用自增主键作为外键

mysql - 使用 SSH 隧道或使用本地 pg_dump 客户端进行远程 PostgreSQL 数据库转储的安全优点/缺点是什么?

mysql - 在具有自动增量 ID 的表中插入值