首頁 >資料庫 >mysql教程 >如何檢查 MySQL 列是否包含另一列的所有值?

如何檢查 MySQL 列是否包含另一列的所有值?

Susan Sarandon
Susan Sarandon原創
2024-12-29 22:16:37349瀏覽

How to Check if a MySQL Column Contains All Values from Another Column?

檢查 MySQL 資料庫中某一列是否包含另一列的所有值

考慮兩個表 T1 和T2,具有以下內容結構:

T1:

personID stuffID
1 1
1 2
1 3
1 4
2 1
2 4
3 1
3 2

T2:

stuffID
1
2
3

T2:

目標是檢索所有personID 值來自T1 的與T2 中的每個stuffID 值關聯的。對於此範例,結果將為 1,因為只有 personID 1 具有 T2 中存在的所有三個 stuffID 的記錄。

解決方案:

要實現此目的,我們可以使用分兩步驟過程:

SELECT personID
FROM T1
WHERE stuffID IN (SELECT stuffID FROM T2)

第1 步:識別匹配記錄

此子查詢從T1 檢索所有在T2中至少有一個符合 stuffID 的 personID 值。

GROUP BY personID
HAVING COUNT(DISTINCT stuffID) = (SELECT COUNT(stuffID) FROM T2)

第2 步:檢查完整性

這部分按personID 將步驟1 的結果分組,並檢查不同的計數是否相同每個組的stuffID 值等於T2 中的stuffID 值的數量。如果是,則表示 personID 與 T2 中的所有 stuffID 值關聯。

最終查詢:
SELECT personID
FROM T1
WHERE stuffID IN (SELECT stuffID FROM T2)
GROUP BY personID
HAVING COUNT(DISTINCT stuffID) = (SELECT COUNT(stuffID) FROM T2)
結合這兩個步驟,最後查詢檢查列是否包含MySQL 中另一列的所有值是:

以上是如何檢查 MySQL 列是否包含另一列的所有值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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