很難弄清楚這一點。問題基本上是一個包含 2 個整數資料 p1 和 p2 的表。假設 p1=100,p2=101。可能存在也可能不存在值 p1=101,p2=100 的另一行(相反)。我必須找到一個只列出沒有反向版本的行的查詢。希望我能夠清楚地解釋這個問題,但英語很難......任何幫助都非常感謝。
編輯:忘了提,我不能在這個問題的解決方案中使用 INNER,OUTER JOIN 陳述句。
示例表:查看此表,我只需要選擇第 3 行 p1=106,p2=104。
p1=101 , p2=103
p1=103 , p2=101
p1=106 , p2=104
p1=108 , p2=105
p1=105 , p2=108
uj5u.com熱心網友回復:
像這樣的東西應該作業:
SELECT t1.p1, t1.p2
FROM tbl as t1
LEFT JOIN tbl as t2
ON t1.p1 = t2.p2 AND t1.p2 = t2.p1
WHERE t2.p1 IS NULL
在這里查看:http ://sqlfiddle.com/#!9/28b0af/6
uj5u.com熱心網友回復:
您可以使用least/greatest
select least(p1,p2) pl, greatest(p1,p2) pg
from tbl
group by least(p1,p2), greatest(p1,p2)
having count(*) = 1
uj5u.com熱心網友回復:
這也可以(并且不使用 JOIN):
select t1.p1,t1.p2
from tbl t1
where not exists(select p2,p1 from tbl where p2=t1.p1 and p1=t1.p2)
uj5u.com熱心網友回復:
NOT EXISTS(...)是最直觀的解決方案:
SELECT *
FROM thetable tt
WHERE NOT EXISTS (
SELECT * FROM thetable nx
WHERE nx.p1 = tt.p2
AND nx.p2 = tt.p1
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/450606.html
