这是我的测试数据库:http://sqlfiddle.com/#!2/e501e/1
我想执行一个MySQL查询来检查列 USERID 是否至少有两行具有不同的值,列 NUMBERID 的值是否相同。所以在这个例子中结果是:
答案 0 :(得分:2)
select count(*)
from test a
join test b
on a.numberid = b.numberid
and a.userid != b.userid
此查询将返回2 x此类对的数量,以便足以判断是否存在任何此类对。
答案 1 :(得分:0)
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
注意,即使您在屏幕截图中将其包含在红色中,也不会返回。那是因为它只有一行,其中numberid不等于userid。在您的屏幕截图中,如果您查看您标识的numberid的第二行,则numberid实际上等于用户ID,2。因此该行不计入您声明的2+要求。
并且numberid 1回来但是由于不同的原因,在sql小提琴的测试数据中,你有一个额外的行(1,3),当加上(1,2)时,使numberid 1符合2 +要求。只有(1,1)和(1,2)它不符合要求,因为只有(1,2)不同。