繁体   English   中英

MySQL:如何在给定其他某个列值的情况下选择其中两个列值的组合唯一的行

[英]Mysql: how to select rows where the combination of 2 of the column values are unique given a certain other column value

我有一个像表(id,C1,C2,R,..)表,在此表中, C1-C2对与一个或多个R ,例如(id1,a,b,r1,...) (id2,a,b,r2,...)我想找出所有仅与某个R相关的C1-C2对(例如对于r1 ,则不包括ab对,因为它也与r2 ),我应该如何编写查询?

您可以将C1和C2分组,然后计算等于您想要的值的“ r”的数量(并确保其不为0)和不等于的“ r”的数量(并确保其为0):

SELECT   c1, c2
FROM     mytbale
GROUP BY c1, c2
HAVING   COUNT(CASE r WHEN 'r1' THEN e END) > 0 AND
         COUNT(CASE r WHEN 'r1' THEN NULL ELSE 1 END) = 0 

如果我理解正确的话,你可以用group byhaving 我想要所有只与一个r相关的对:

select c1, c2, max(r) as r
from t
group by c1, c2
having min(r) = max(r);

如果你有一个特别的r记:

select c1, c2
from t
group by c1, c2
having min(r) = max(r) and min(r) = 'r1'

暂无
暂无

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

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