使用Mysql数据库从两个SQL表中具体选择数据
我有一个mysql数据库,我想做一个具体的选择。以下是场景: 第一个表格 关于货运车辆的道路列表数据使用Mysql数据库从两个SQL表中具体选择数据,mysql,sql,select,Mysql,Sql,Select,我有一个mysql数据库,我想做一个具体的选择。以下是场景: 第一个表格 关于货运车辆的道路列表数据 roadListNumber(primary_key), vehicle, driver, startWorkTime, endWorkTime and so on. 第二张表 使用第一个表的主键映射的货物区域 roadListNumber(foreign_key), zoneId, timeInside, spentMoney and so on. 问题在于,并非所有车辆都会驶入货物区,因
roadListNumber(primary_key), vehicle, driver, startWorkTime, endWorkTime and so on.
第二张表
使用第一个表的主键映射的货物区域
roadListNumber(foreign_key), zoneId, timeInside, spentMoney and so on.
问题在于,并非所有车辆都会驶入货物区,因此一些道路列表没有与货物区进行映射(第二个表),这就是我的问题和问题:
如何从第一个表中选择所有道路列表并将结果与第二个表(货物区)连接起来,而不跳过未与货物区映射的道路列表?您可以使用
左连接获取数据。。。同时使用分组依据
,以避免重复数据
SELECT rl.roadListNumber,rl.vehicle,cz.zoneId,cz.spentMoney
FROM road_list rl
LEFT JOIN cargo_zone cz on (rl.roadListNumber=cz.roadListNumber)
GROUP BY rl.roadListNumber
您已经使用了正确的单词(JOIN)。您可以使用左外部联接
来获取第一个(或左)表中的所有记录,并根据ON
子句将它们与第二个(或右)表中相应的记录关联起来
注意这里左右表术语的用法,以及它与左
外部联接的关系。
如果第二个表上没有匹配的记录,则在结果集中第二个表的列上会出现NULL
SELECT * FROM roadlist rl
LEFT OUTER JOIN cargozones cz ON rl.roadlistnumber = cz.roadlistnumber
有很多种连接。例如,如果您使用的是内部联接
,则只会获得第二个表中匹配的记录
有关SQL联接如何工作的良好视觉解释,请参阅此博客文章: