SQL选择多行

时间:2016-11-09 17:02:55

标签: mysql sql

如果我有一张类似于以下内容的表格:

+-------------+------------+-----------------+
| 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 |

非常感谢任何帮助或指示

2 个答案:

答案 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。我不知道架构,但上面应该让你开始。