我想在表中配對兩行。SQL與交叉值配對的行
ZZ XX PZZ PXX A B 1 2 G E 5 9 M N 4 4 E H 7 4 Q R 2 2 T D 8 1 H E 4 7 B A 2 1 L B 7 3
我想配對行具有相同的值,但值交叉到其他列如下。 預期輸出:
ZZ XX PZZ PXX A B 1 2 B A 2 1 E H 7 4 H E 4 7
我想在表中配對兩行。SQL與交叉值配對的行
ZZ XX PZZ PXX A B 1 2 G E 5 9 M N 4 4 E H 7 4 Q R 2 2 T D 8 1 H E 4 7 B A 2 1 L B 7 3
我想配對行具有相同的值,但值交叉到其他列如下。 預期輸出:
ZZ XX PZZ PXX A B 1 2 B A 2 1 E H 7 4 H E 4 7
一個簡單INNER JOIN
將做:
SELECT t1.ZZ, t1.XX, t1.PZZ, t1.PXX
FROM mytable AS t1
INNER JOIN mytable AS t2
ON t1.ZZ = t2.XX AND t1.XX = t2.ZZ AND t1.PZZ = t2.PXX AND t1.PXX = t2.PZZ
ON
的條款做XX
,ZZ
之間PXX
,PZZ
列F中的表之間的交叉匹配。
它的工作原理!謝謝。 –
使用一個EXISTS子句來檢查,如果存在兄弟姐妹。
select *
from mytable
where exists
(
select *
from mytable pair
where pair.zz = mytable.xx
and pair.xx = mytable.zz
and pair.pzz = mytable.pxx
and pair.pxx = mytable.pzz
);
或甚至IN子句簡單:
select *
from mytable
where (zz, xx, pzz, pxx) in
(
select xx, zz, pxx, pzz
from mytable
);
如果你想你的結果排序,使用ORDER BY以最少和最偉大:
order by least(xx, zz), greatest(xx, zz), zz, least(pxx, pzz), greatest(pxx, pzz), pzz;
整潔 - 你有一個問題? – Siyual
是的,我編輯了我的問題。 –
我仍然沒有看到任何問題......你能詳細說明你想要做什麼嗎?還請說明您爲解決問題所做的嘗試。我們不是代碼寫作服務。 – Siyual