使用Mysql数据库从两个SQL表中特定选择数据

时间:2013-02-15 11:39:57

标签: mysql sql select

我有一个mysql数据库,我想做一个特定的选择。这是场景:

第一张表

关于货车的道路清单数据。

roadListNumber(primary_key), vehicle, driver, startWorkTime, endWorkTime and so on.

第二张表

使用第一个表的主键映射的货物区域。

roadListNumber(foreign_key), zoneId, timeInside, spentMoney and so on.

问题在于并非每辆车都进入货物区域,所以一些道路清单没有与货物区域(第二张表格)相映射,这就是我的问题和问题:

如何从第一张表格中选择所有道路清单,并将结果与​​第二张表格(货物区域)连接,而不跳过未与货物区域映射的道路列表?

2 个答案:

答案 0 :(得分:2)

您可以使用LEFT JOIN获取数据...也可以使用GROUP BY来避免重复数据..

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

答案 1 :(得分:1)

您已使用正确的字词(加入)。您可以使用LEFT OUTER JOIN来获取第一个(或)表中的所有记录,并将它们与第二个(或右)中的相应记录相关联。 em>)表根据ON子句。

请注意表术语的使用及其与 LEFT OUTER JOIN.的关系

如果第二个表上没有匹配的记录,您将在结果集的第二个表的列中获得NULL

SELECT * FROM roadlist rl 
    LEFT OUTER JOIN cargozones cz ON rl.roadlistnumber = cz.roadlistnumber

JOIN有很多种。例如,如果您使用INNER JOIN,则只能获得第二个表上匹配的记录。

有关SQL如何工作的详细视觉说明,请参阅此博客文章:Coding Horror: A Visual Explanation of SQL Joins