我使用的是MySql 5.7.18和PHP 7。
我有这张桌子:
id | object_id | item_id
-------------------------
1 1 2
2 1 3
3 1 4
4 2 5
5 2 3
6 3 2
7 3 3
8 3 4
9 4 2
10 5 1
11 5 3
12 5 5
13 6 2
14 6 3
15 6 4
因此,我需要按id选择引用对象,例如,我将获取对象id
1
并获取其项,因此在我的代码中,我将获得:$object_id = 1;
$item_ids = [2, 3, 4];
现在我想让所有的
object_id
都有相同的item_id
组。所以在这里我需要得到object_id 3 and 6
,因为它们都比对象1有相同的item_id
。另一个例子,如果引用中有
object_id
2,则不会得到结果,因为没有具有相同组id的行。使用SQL查询可以做到这一点,还是必须在代码中做到这一点?
最佳答案
是的,通过连接似乎是可能的,这里是:
select a.* from (
select object_id, group_concat(item_id order by id separator '-') as item_list
from test group by object_id
) a where a.item_list = '2-3-4'
这是小提琴:
http://sqlfiddle.com/#!9/6360bc/6
如果要按对象ID查询:
select a.* from (
select object_id, group_concat(item_id order by id separator '-') as item_list
from test group by object_id
) a where a.item_list = (
select group_concat(item_id order by id separator '-')
from test where object_id = 1
)