首頁 > 資料庫 > mysql教程 > 如何在 MySQL 中跨行選擇具有多個特定列值的項目?

如何在 MySQL 中跨行選擇具有多個特定列值的項目?

DDD
發布: 2024-10-28 18:54:02
原創
248 人瀏覽過

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

MySQL 選擇具有多個特定列值的不同行上出現的ID

問題:

根據特定列的多個指定值從關聯表中選擇項目是一項常見但具有挑戰性的任務。例如,給定表:

item_id category_id
1 200
1 201
1 202
2 201
2 202
3 202
3 203
4 201
4 207

目標是僅選擇屬於兩個或所有指定類別的項目;例如,如果提供類別 ID 201 和 202,則僅應傳回項目 1 和 2。

解:

1。自連接:

此方法涉及在item_id 列上將表與自身連接:

<code class="sql">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 IN (201, 202)</code>
登入後複製

此查詢傳回一個連接結果集,其中每個唯一的對都包含一行原始表中滿足category_id條件的行。

2. Group BY 和HAVING:

另一個方法是使用GROUP BY 和HAVING 子句:

<code class="sql">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</code>
登入後複製

此按item_id 將行分組,並計算類別ID 的出現次數每行201 和202。 HAVING 子句過濾掉那些沒有指定出現次數(在本例中為 2)的行。

以上是如何在 MySQL 中跨行選擇具有多個特定列值的項目?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板