[英]Searching products by specific attributes
我有一個小商店系統,現在我想選擇一些具有特定屬性和條件的產品。
這是我的設置:
XYZ表:
所以現在我要選擇所有具有屬性ID 1、3、5和7而不是9和2的產品。
我如何以一種簡單的方式執行此操作,我的第一個想法是按產品ID對其進行分組,並對attribute_ids進行分組,並使用“具有”來包含和排除我想要的屬性ID。
SELECT CONCAT('_',GROUP_CONCAT(attribute_id SEPARATOR '_'),'_') as attrs,
product_id
FROM my_table
GROUP BY product_id
HAVING (attrs LIKE '%_1_%'
AND attrs LIKE '%_3_%'
AND attrs LIKE '%_5_%'
AND attrs LIKE '%_7_%')
AND (attrs NOT LIKE '%_2_%'
AND attrs NOT LIKE '%_9_%')
這可行,但是有更好的解決方案,對吧?
也許這會有所幫助?
從table_XYZ的WHERE attribute_id IN(1,3,5,7)中選擇product_id
或者,如果您有更多ID,並且僅排除少數幾個:
從table_XYZ的SELECT product_id中選擇attribute_id NOT IN(2,9);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.