如何有效率地選擇MySQL表中屬於多個類別的項目?

Patricia Arquette
發布: 2024-10-31 04:11:31
原創
316 人瀏覽過

How to Efficiently Select Items Belonging to Multiple Categories in a MySQL Table?

識別多個類別中的項目

問題:

在包含關聯資訊中的MySQL 表中(item_id 和category_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:自行-Join

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
登入後複製

此技術需要建立表的笛卡爾積的自聯接,這對於大型資料集可能效率低。

解決方案2: GROUP BY 和HAVING

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 和HAVING 來計算每個項目的類別數,並過濾掉與指定集合匹配的類別。它對於較大的數據集表現更好。

以上是如何有效率地選擇MySQL表中屬於多個類別的項目?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!