【发布时间】:2016-11-01 13:35:17
【问题描述】:
我有一个小商店系统,现在我想选择一些具有特定属性和条件的产品。
这是我的设置:
表 XYZ:
- product_id
- attribute_id
- attribute_group_id
所以现在我想选择所有属性 ID 为 1、3、5 和 7 而不是 9 和 2 的产品。
我怎样才能以一种简单的方式做到这一点,我的第一个想法是按产品 ID 和 group_concat 属性 ID 进行分组,并使用“拥有”来包含和排除我想要的属性 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_%')
这可行,但有更好的解决方案,对吧?
【问题讨论】:
标签: mysql relationship