繁体   English   中英

选择一对在一行中具有相等值而在另一列中具有不同值的行

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

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