首頁 >資料庫 >mysql教程 >如何在 MySQL 中自連接表以檢索多行資料?

如何在 MySQL 中自連接表以檢索多行資料?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-03 07:05:39505瀏覽

How to Self-Join a Table in MySQL to Retrieve Data from Multiple Rows?

如何在MySQL 中多次連接同一個表

當您需要在一個表中多次關聯同一個表中的記錄時查詢時,MySQL 提供了將表格與其自身連接的能力。這允許您從同一表的不同行檢索數據,從而有效地在行之間建立新的關係。

為了說明這個概念,請考慮以下場景:

您有兩個表格: 「網域」和「評論」。 「domains」表格儲存域 ID 和域名,而「reviews」表包含寄件者 (rev_dom_from) 和收件者 (rev_dom_for) 的評論資料和引用域名。

您的任務是顯示兩者網頁上的網域名稱。雖然您可以使用標準 LEFT JOIN 輕鬆顯示一個域名,但出現了問題:如何從“rev_dom_from”列中檢索第二個域名?

解決方案在於利用多個聯結。透過多次加入「domains」表,可以在評論和對應的網域之間建立不同的關係:

SELECT toD.dom_url AS ToURL, 
    fromD.dom_url AS FromUrl, 
    rvw.*

FROM reviews AS rvw

LEFT JOIN domain AS toD 
    ON toD.Dom_ID = rvw.rev_dom_for

LEFT JOIN domain AS fromD 
    ON fromD.Dom_ID = rvw.rev_dom_from

在此查詢中:

  • toD 是別名對於連接的「domains」表的第一個實例,代表「To」網域。
  • fromD 是連接的第二個實例的別名「domains」表,代表「From」網域。

透過為連接表新增別名,您可以區分兩個實例並擷取所需的資料。這種多次連接同一個表的技術通常稱為“自連接”,可以應用於需要在單一表中建立多個關係的各種場景。

以上是如何在 MySQL 中自連接表以檢索多行資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn