繁体   English   中英

如何在唯一的数组中获取记录

[英]How to get record in unique array Mysql

我有一张桌子:

----------------------
| user_id | marker_id|
----------------------
| 1 | 1 |
--------
| 1 |2 |
--------
| 2 |1 |
--------
| 2 |2 |
--------
| 2 |3 |
--------
| 3 |1 |
--------

我想获得唯一的user_id具有marker_id =(1,2)。 不要获取user_id的marker_id =(1,2,3)。 如何获取user_id = 1而不包括user_id = 2。

select distinct user_id 
from table_name 
where marker_id in (1,2)

一种方法使用group by

select user_id
from t
group by user_id
having sum(marker_id = 1) > 0 and
       sum(marker_id = 2) > 0 and
       sum(marker_id not in (1, 2)) = 0;

中每个条件having子句测试值中的一个。 对于marker_id = 1的第一个测试, > 0表示至少有一个。 第二个类似地测试marker_id = 2 第三个说没有其他标记ID。

我称这种类型的查询为“ set-in-sets”子查询(您正在寻找每个用户的标记id)。 我发现group by having解决问题的灵活方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM