簡體   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