檢查 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中文網其他相關文章!