簡體   English   中英

在mysql中選擇不同的記錄

[英]Select distinct records in mysql

我的桌子

ANONYMOUS
ONE   TWO
1      2
2      1
1      2
3      1

現在我想選擇一個和兩個不同的集合。 我選擇的列表應該是

ANONYMOUS
    ONE   TWO
    1      2
    3      1

你的問題不是很清楚,但我想你的意思是:

SELECT DISTINCT one, two
FROM yourtable AS T1
WHERE one <= two
OR NOT EXISTS
(
     SELECT *
     FROM yourtable AS T2
     WHERE T1.one = T2.two
     AND T1.two = T2.one
)

它找到具有(one, two)行,其中反轉對(two, one)不存在。 如果兩者都存在,則選擇該對,使得one < two 它還選擇值相等的行。

看到它在線工作: sqlfiddle

如果您更喜歡使用JOIN而不是NOT EXISTS那么您可以這樣做:

SELECT DISTINCT T1.one, T1.two
FROM yourtable AS T1
LEFT JOIN yourtable AS T2
ON T1.one = T2.two
AND T1.two = T2.one
WHERE T1.one <= T1.two
OR T2.one IS NULL

看到它在線工作: sqlfiddle

SELECT DISTINCT a.*
FROM        `ANONYMOUS` a
LEFT JOIN   `ANONYMOUS` b ON (a.one=b.two and a.two=b.one)
WHERE       b.one is null or a.one<b.one
ORDER BY    1,2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM