首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Mysql数据库从两个SQL表中具体选择数据

使用Mysql数据库从两个SQL表中具体选择数据
EN

Stack Overflow用户
提问于 2013-02-15 11:39:57
回答 2查看 390关注 0票数 1

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

第一表

货运车辆的道路清单数据。

代码语言:javascript
复制
roadListNumber(primary_key), vehicle, driver, startWorkTime, endWorkTime and so on.

第二表

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

代码语言:javascript
复制
roadListNumber(foreign_key), zoneId, timeInside, spentMoney and so on.

问题是,并非每部车辆都会驶往货运区,所以有些道路清单并没有列出货运区(第二表),我的问题和问题如下:

如何从第一个表中选择所有的路况列表,并将结果与第二个表(货物区)连接,而不跳过没有与货物区域映射的路表列表?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-15 11:44:12

您已经使用了正确的单词(联接)。您可以使用LEFT OUTER JOIN来获取第一个(或左边)表中的所有记录,并根据ON子句将它们与第二个(或右边)表中的相应记录关联起来。

请注意这里左表和右表术语的用法以及它与LEFTOUTER JOIN.的关系。

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

代码语言:javascript
复制
SELECT * FROM roadlist rl 
    LEFT OUTER JOIN cargozones cz ON rl.roadlistnumber = cz.roadlistnumber

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

请参阅这篇博客文章,以获得关于SQL如何工作的良好的可视化说明:编码恐怖: SQL连接的可视化解释

票数 1
EN

Stack Overflow用户

发布于 2013-02-15 11:44:09

你可以用LEFT JOIN来获取数据..。还可以使用GROUP BY避免重复数据。

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14893933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档