[英]Select a couple of rows having equal values in one column and different in another
这是我拥有的测试数据库: http : //sqlfiddle.com/#!2/e501e/1
我想执行一个MySQL查询,以检查是否至少有两行具有不同的USERID列值和相同的NUMBERID列值 。 因此,在此示例中,结果将是:
select count(*)
from test a
join test b
on a.numberid = b.numberid
and a.userid != b.userid
此查询将返回2 x此类对的数量,因此足以判断是否存在此类对。
http://sqlfiddle.com/#!2/e501e/14
select x.*
from test x
join (select numberid
from test
where numberid <> userid
group by numberid
having count(*) > 1) y
on x.numberid = y.numberid
where x.numberid <> x.userid
即使编号2在屏幕截图中用红色括起来,编号也不会回来。 那是因为它只有一行,其中numberid不等于userid。 在屏幕快照中,如果查看第二行所标识的numberid,则numberid实际上等于userid2。因此,该行不计入您声明的2+要求。
而numberid 1又回来了,但是由于另一个原因,在sql小提琴上的测试数据中,您还有一个额外的行(1,3),将其与(1,2)相加时,会使numberid 1满足2+要求。 仅使用(1,1)和(1,2)不能满足要求,因为只有(1,2)是不同的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.