[英]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.