如果我有一张类似于以下内容的表格:
+-------------+------------+-----------------+
| instance_id | product_id | option_value_id |
+-------------+------------+-----------------+
| 1 | 1 | 1 |
| 1 | 1 | 2 |
| 1 | 1 | 3 |
| 2 | 1 | 1 |
| 2 | 1 | 3 |
| 2 | 1 | 4 |
+-------------+------------+-----------------+
如何创建查询以查找instance_id 2表示具有选项值1,3和4的product_id 1的实例?
例如,我希望能够查询表格,如下所示:
select instance_id from instances where product_id = 1 'having' option_value_id = 1 and option_value_id=3 and option_value_id=4
(显然这不会起作用)并获得结果
+-------------+
| instance_id |
+-------------+
| 1 |
非常感谢任何帮助或指示
答案 0 :(得分:0)
会有助于知道你想要的输出是什么......但也许是这样的:
Select A.Instannce_ID, B.instance_ID, group_concat(Distinct option_value_ID SEPERATOR ',') as Option_Values
from Table A
INNER JOIn table B
on A.Product_ID = B.Product_ID
and A.Instance_ID < B.Instance_ID
WHERE Option_value_ID In (1,3,4)
GROUP BY A.Instannce_ID, B.instance_ID
HAVING Count(distinct option_value_ID) = 3
这会自动加入product_ID,确保实例不匹配,我们不会进行双向匹配,并在1个字段中报告选项值。
答案 1 :(得分:0)
select product_id
, group_concat(option_value_id)
from table
where instance_id = 1
group by instance_id;
如果product_id在 instance_id中更改,显然无法得到您想要的内容,即每个instance_id可能有多个product_id。我不知道架构,但上面应该让你开始。