使用SQL内部联接从多个表中检索数据

内部连接返回出现在两个或更多数据库中的信息

内部连接是SQL中使用最频繁的连接。 它们只返回两个或更多数据库表中存在的信息。 连接条件确定哪些记录配对在一起,并在WHERE子句中指定。 例如,如果您需要车辆和驾驶员都位于同一城市的驾驶员/车辆匹配列表,则以下SQL查询将完成此任务:

SELECT姓氏,名字,标记FROM驱动程序,车辆WHERE drivers.location = vehicles.location

结果如下:

姓氏名字标记
----------- ------------ ----
贝克罗兰H122JM
史密斯迈克尔D824HA
史密斯迈克尔P091YF
雅各布亚伯拉罕J291QR
雅各布亚伯拉罕L990MT

请注意,结果正是所寻求的。 可以通过在WHERE子句中指定其他条件来进一步优化查询。 假设原始查询将驾驶员匹配到他们未被授权驾驶的车辆(卡车驾驶员驾驶汽车,反之亦然)。 您可以使用以下查询来解决此问题:

SELECT姓氏,名字,标记,vehicles.class FROM司机,车辆WHERE drivers.location = vehicles.location AND drivers.class = vehicles.class

此示例在SELECT子句中指定类属性的源表,因为该类不明确 - 它出现在两个表中。 代码通常会指定查询结果中应包含哪个表的列。 在这种情况下,它没有什么区别,因为列是相同的,并且它们使用equijoin进行连接。 但是,如果列包含不同的数据,这种区别将是至关重要的。 这是这个查询的结果:

姓氏名字标记类
---------- ------------ ---- ------
贝克罗兰H122JM车
史密斯迈克尔D824HA卡车
雅各布亚伯拉罕J291QR车

失踪的行使迈克尔·史密斯与一辆汽车以及亚伯拉罕·雅各布斯搭配一辆卡车,这些车辆是他们未被授权驾驶的。

您也可以使用内部联接来合并来自三个或更多表的数据