首頁 > 資料庫 > mysql教程 > 如何在不使用 INTERSECT 的情況下在 MySQL 中跨多個表查找匹配記錄?

如何在不使用 INTERSECT 的情況下在 MySQL 中跨多個表查找匹配記錄?

Susan Sarandon
發布: 2024-12-27 09:32:13
原創
344 人瀏覽過

How Can I Find Matching Records Across Multiple Tables in MySQL Without Using INTERSECT?

使用INNER JOIN 和IN 子句在MySQL 中尋找記錄交集

使用多個資料表時,通常需要在多個欄位中搜尋與特定條件相符的記錄。在這種情況下,您想要尋找名字和姓氏欄位與另一個表中的特定值相符的記錄。

一種方法是使用 INTERSECT 指令,如 SQL 查詢範例所示。但是,MySQL 不支援 INTERSECT。相反,有其他方法可以實現所需的結果。

使用 INNER JOIN

INNER JOIN 可用於過濾在另一個表中具有匹配行的記錄。在您的情況下,您可以使用以下查詢:

SELECT DISTINCT records.id
FROM records
INNER JOIN data d1 ON d1.id = records.firstname AND d1.value = "john"
INNER JOIN data d2 ON d2.id = records.lastname AND d2.value = "smith"
登入後複製

此查詢將傳回滿足這兩個條件的記錄的唯一 ID。

使用IN 子句

另一個另一種方法是使用IN 子句來過濾子查詢中存在的值:

SELECT DISTINCT records.id
FROM records
WHERE records.firstname IN (
    SELECT id FROM data WHERE value = 'john'
)
AND records.lastname IN (
    SELECT id FROM data WHERE value = 'smith'
)
登入後複製

此查詢將傳回通過選擇名字和姓氏值與子查詢中指定值相符的記錄,得到與INNER JOIN 查詢相同的結果。

以上是如何在不使用 INTERSECT 的情況下在 MySQL 中跨多個表查找匹配記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板