php - MySQL选择具有相同组id的所有行
问题描述
我正在使用 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 选择参考对象,例如我将获取 object_id1
并获取他的项目,所以在我的代码中我会得到:
$object_id = 1;
$item_ids = [2, 3, 4];
现在我想得到所有object_id
拥有相同组的item_id
. 所以在这里我需要得到,object_id 3 and 6
因为它们都与item_id
对象 1 相同。
另一个示例,如果我有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
)
推荐阅读
- r - 使用 lmer 的 Glmer 警告消息
- python - 有什么方法可以为每个输入添加 ValueError 吗?
- python - 如何在每个输出上添加增加的数字
- lit-element - 如何使用 Lit-Element 查询装饰器?
- java - 如何在 log4j 的不同文件中保存错误级别?
- c++ - 在编译时只接受特定的整数
- python - 为什么准确率低于 0.01,但预测非常好(99.99%)
- angular - 绑定到模型后,角度 ng-multiselect-dropdown 布局更改
- r - 在闪亮的数据表excel输出中删除标题上方的“标题”行?
- python-3.x - 如何使用 python boto3 在 aws S3 中创建文件