首頁  >  文章  >  資料庫  >  如何跨行選擇具有多個特定列值的 MySQL ID?

如何跨行選擇具有多個特定列值的 MySQL ID?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-30 07:30:27649瀏覽

How to Select MySQL IDs with Multiple Specific Column Values Across Rows?

選擇具有特定列值的多行中出現的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      |
+-----------------------+

目標是僅選擇屬於兩個指定類別的項目,儘管可能與其他類別相關聯。

無效的解決方案:

  • WHERE Category_id = 201 AND Category_id = 202: 不成功,因為它搜尋不可能的條件(單行上的兩個值)。
  • WHEREcategory_id=201ORcategory_id=202:傳回不正確的結果(包括不屬於兩個類別的項目)。

有效的解決方案:

自連接:

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

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