使用多個資料表時,通常需要在多個欄位中搜尋與特定條件相符的記錄。在這種情況下,您想要尋找名字和姓氏欄位與另一個表中的特定值相符的記錄。
一種方法是使用 INTERSECT 指令,如 SQL 查詢範例所示。但是,MySQL 不支援 INTERSECT。相反,有其他方法可以實現所需的結果。
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 子句來過濾子查詢中存在的值:
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中文網其他相關文章!