翻譯|使用教程|編輯:莫成敏|2019-08-28 11:42:56.277|閱讀 773 次
概述:在本篇文章中,我們將學(xué)習(xí)如何使用Navicat Premium作為數(shù)據(jù)庫(kù)客戶端編寫(xiě)包含自聯(lián)接的查詢。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷售中 >>
相關(guān)鏈接:
Navicat Premium 是一套數(shù)據(jù)庫(kù)管理工具,讓你使用一個(gè)程序即可同時(shí)連接到 MySQL、MariaDB、SQL Server、SQLite、Oracle 和 PostgreSQL 數(shù)據(jù)庫(kù)。
有時(shí)需要獲取駐留在同一個(gè)表中的相關(guān)數(shù)據(jù)。為此,需要一種特殊的連接,稱為自連接。在本篇文章中,我們將學(xué)習(xí)如何使用Navicat Premium作為數(shù)據(jù)庫(kù)客戶端編寫(xiě)包含自聯(lián)接的查詢。
語(yǔ)法
SELF JOIN的基本語(yǔ)法如下:
SELECT a.column_name,b.column_name ... FROM table1 a,table1 b WHERE a.common_field = b.common_field;
除了公共字段的鏈接之外,WHERE子句還可以根據(jù)您的特定要求包含其他表達(dá)式。
一個(gè)例子
在Sakila示例數(shù)據(jù)庫(kù)中,有一個(gè)客戶表,其中包含與客戶相關(guān)的信息,例如客戶的姓名、電子郵件和地址。以下是Navicat Table Desginer中的列:
我們可以使用自連接來(lái)檢索姓氏與另一個(gè)客戶的名字相匹配的所有客戶。我們通過(guò)為客戶表分配別名來(lái)實(shí)現(xiàn)這一目標(biāo)。別名允許我們將表連接到自身,因?yàn)樗鼈優(yōu)楸硖峁┝藘蓚€(gè)唯一的名稱,這意味著我們可以查詢表,就像它是兩個(gè)不同的表一樣。然后將它們連接到last_name和first_name字段:
SELECT c1.customer_id as customer_1_id, c1.first_name as customer_1_first_name, c1.last_name as customer_1_last_name, c2.customer_id as customer_2_id, c2.first_name as customer_2_first_name, c2.last_name FROM customer c1, customer c2 WHERE c1.last_name = c2.first_name ORDER BY c1.last_name;
Navicat的自動(dòng)完成功能在編寫(xiě)查詢時(shí)非常有用,因?yàn)樗兄诒苊馄磳?xiě)錯(cuò)誤并且不得不猜測(cè)列名。因此,它對(duì)于選擇字段特別有用:
執(zhí)行查詢會(huì)生成以下結(jié)果:
使用INNER JOIN
將表鏈接到自身的另一種方法是使用INNER JOIN。如果您不確定如何做到這一點(diǎn),Navicat可以提供幫助!它提供了一個(gè)名為Query Builder的有用工具,用于直觀地構(gòu)建查詢。它允許您在不太了解SQL的情況下創(chuàng)建和編輯查詢。數(shù)據(jù)庫(kù)對(duì)象顯示在左窗格中。而在右側(cè)窗格中,它分為兩部分:上部“圖表設(shè)計(jì)”窗格和下部“語(yǔ)法”窗格。
我們只需將第一個(gè)表別名的last_name字段拖到第二個(gè)表別名的first_name,查詢生成器就會(huì)為我們生成JOIN!
這是生成的SQL語(yǔ)句:
SELECT c1.customer_id AS customer_1_id, c1.first_name AS customer_1_first_name, c1.last_name AS customer_1_last_name, c2.customer_id AS customer_2_id, c2.first_name AS customer_2_first_name, c2.last_name FROM customer AS c1 INNER JOIN customer AS c2 ON c1.last_name = c2.first_name ORDER BY customer_1_last_name ASC ;
希望文章內(nèi)容對(duì)您有幫助~
想要購(gòu)買(mǎi)Navicat Premium正版授權(quán),或了解更多產(chǎn)品信息請(qǐng)點(diǎn)擊
掃描關(guān)注慧聚IT微信公眾號(hào),及時(shí)獲取最新動(dòng)態(tài)及最新資訊
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@ke049m.cn