使用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車

失踪的行使邁克爾·史密斯與一輛汽車以及亞伯拉罕·雅各布斯搭配一輛卡車,這些車輛是他們未被授權駕駛的。

您也可以使用內部聯接來合併來自三個或更多表的數據