選擇具有特定列值的多行中出現的MySQL ID
識別滿足特定列中兩個或多個特定值的專案可以是MySQL 中的挑戰。考慮以下表格結構:
+-----------------------+ | item_id | category_id | +-----------------------+ | 1 | 200 | | 1 | 201 | | 1 | 202 | | 2 | 201 | | 2 | 202 | | 3 | 202 | | 3 | 203 | | 4 | 201 | | 4 | 207 | +-----------------------+
目標是僅選擇屬於兩個指定類別的項目,儘管可能與其他類別相關聯。
無效的解決方案:
有效的解決方案:
自連接:
SELECT c1.item_id FROM item_category AS c1 INNER JOIN item_category AS c2 ON c1.item_id = c2.item_id WHERE c1.category_id = 201 AND c2.category_id = 202
此方法基於公共列( item_id) 連接同一表中的行,允許在多行及其值之間進行比較。
GROUP BY:
SELECT c.item_id, COUNT(*) AS cat_count FROM item_category AS c WHERE c.category_id IN (201,202) GROUP BY c.item_id HAVING cat_count = 2
利用 GROUP BY 函數,此方法計算每個 item_id 的不同類別值的數量。選擇 cat_count 等於指定類別數(本例為 2)的項目。
結論:
兩種方法都可以有效辨識出符合所需標準的項目。它們之間的選擇取決於具體要求和資料庫效能考慮。
以上是如何跨行選擇具有多個特定列值的 MySQL ID?的詳細內容。更多資訊請關注PHP中文網其他相關文章!