【问题标题】:Mysql query issue(how to eliminate records having null value for old_device_id column) [duplicate]Mysql查询问题(如何消除old_device_id列具有空值的记录)[重复]
【发布时间】:2017-05-29 06:36:15
【问题描述】:

我有两张桌子

device(id, name)
device_map(email, old_device_id)

device_mapusersold devices 的列表。有些用户可能没有旧设备。

old_device_idunique 并引用设备表中的id。但也可以是null

现在我想对表连接进行选择查询。

select device.email, device.old_device_id, device.name 
from join of device.id and device_map.old_device_id sort by device.name

device_mapold_device_id 为 null 的某些行未被选中。

SELECT dmap.email, dmap.old_device_id, d.name
FROM device_map dmap 
JOIN device d ON d.id = dmap.old_device_id ORDER BY d.name

【问题讨论】:

  • 你能提供你的SQL吗?看起来你没有使用 LEFT JOIN
  • 能否提供一些样本结果?比如您拥有什么数据以及您期望什么?

标签: mysql


【解决方案1】:

这是查询:

SELECT dm.email, dm.old_device_id, d.name
FROM device_map dm 
LEFT JOIN device d ON d.id = dm.old_device_id ORDER BY d.name

device_mapdevice 表之间的INNER JOIN 将自动消除old_device_idnull 值的记录。

LEFT JOIN 也将包含空记录。

【讨论】:

  • 我尝试过同样的查询。我也想包含所有空记录。
  • @Durgaprasad:我已更改查询。如果您还想包含空记录,那么您应该使用left join 而不是inner join
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-15
  • 2023-03-11
  • 1970-01-01
  • 2020-06-13
相关资源
最近更新 更多