• <menu id="w2i4a"></menu>
  • logo Navicat使用教程-2019.1

    文檔首頁>>Navicat使用教程-2019.1>>Navicat使用教程:編寫包含SQL自連接的查詢

    Navicat使用教程:編寫包含SQL自連接的查詢


    Navicat Premium 是一套數(shù)據(jù)庫管理工具,讓你使用一個程序即可同時連接到 MySQL、MariaDB、SQL Server、SQLite、Oracle 和 PostgreSQL 數(shù)據(jù)庫。

    在線訂購  試用下載

    有時需要獲取駐留在同一個表中的相關(guān)數(shù)據(jù)。為此,需要一種特殊的連接,稱為自連接。在本篇文章中,我們將學(xué)習(xí)如何使用Navicat Premium作為數(shù)據(jù)庫客戶端編寫包含自聯(lián)接的查詢。

    語法

    SELF JOIN的基本語法如下:

    SELECT a.column_name,b.column_name ... 
    FROM table1 a,table1 b 
    WHERE a.common_field = b.common_field;

    除了公共字段的鏈接之外,WHERE子句還可以根據(jù)您的特定要求包含其他表達(dá)式。

    一個例子

    在Sakila示例數(shù)據(jù)庫中,有一個客戶表,其中包含與客戶相關(guān)的信息,例如客戶的姓名、電子郵件和地址。以下是Navicat Table Desginer中的列:

    40customer_table_design.jpg我們可以使用自連接來檢索姓氏與另一個客戶的名字相匹配的所有客戶。我們通過為客戶表分配別名來實現(xiàn)這一目標(biāo)。別名允許我們將表連接到自身,因為它們?yōu)楸硖峁┝藘蓚€唯一的名稱,這意味著我們可以查詢表,就像它是兩個不同的表一樣。然后將它們連接到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的自動完成功能在編寫查詢時非常有用,因為它有助于避免拼寫錯誤并且不得不猜測列名。因此,它對于選擇字段特別有用:

    41auto-complete.jpg

    執(zhí)行查詢會生成以下結(jié)果:

    42results.jpg

    使用INNER JOIN

    將表鏈接到自身的另一種方法是使用INNER JOIN。如果您不確定如何做到這一點,Navicat可以提供幫助!它提供了一個名為Query Builder的有用工具,用于直觀地構(gòu)建查詢。它允許您在不太了解SQL的情況下創(chuàng)建和編輯查詢。數(shù)據(jù)庫對象顯示在左窗格中。而在右側(cè)窗格中,它分為兩部分:上部“圖表設(shè)計”窗格和下部“語法”窗格。

    我們只需將第一個表別名的last_name字段拖到第二個表別名的first_name,查詢生成器就會為我們生成JOIN!

    43query_builder.jpg

    這是生成的SQL語句:

    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)容對您有幫助~


    想要購買Navicat Premium正版授權(quán),或了解更多產(chǎn)品信息請點擊“咨詢在線客服”

    掃描關(guān)注慧聚IT微信公眾號,及時獲取最新動態(tài)及最新資訊

    1563778777.jpg


    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();