我有數據在具有重複行的表,但以不同的順序(row1.column1.value = row2.column2.value反之亦然)例如:如何獲取A-B數據但不包含B-A?
1 A B
2 B A
3 B C
4 C B
5 A C
6 C A
...
從該表我想得到是唯一的數據(這意味着有是具有這2個值加在一起沒有其他行)像這樣:
1 A B
3 B C
6 C A
...
任何人可以幫助我嗎?提前致謝!
我有數據在具有重複行的表,但以不同的順序(row1.column1.value = row2.column2.value反之亦然)例如:如何獲取A-B數據但不包含B-A?
1 A B
2 B A
3 B C
4 C B
5 A C
6 C A
...
從該表我想得到是唯一的數據(這意味着有是具有這2個值加在一起沒有其他行)像這樣:
1 A B
3 B C
6 C A
...
任何人可以幫助我嗎?提前致謝!
SELECT
*
FROM
table
WHERE
(col1, col2) IN (
SELECT DISTINCT
(
CASE
WHEN STRCMP(col1, col2) < 0 THEN
col1
ELSE
col2
END
) AS col1,
(
CASE
WHEN STRCMP(col1, col2) < 0 THEN
col2
ELSE
col1
END
) AS col2
FROM
table
);
這看起來像一個*真*精心製作的方式來說'SELECT * FROM表where col1
如果A-C組合不存在,這不會返回C-A,因此我認爲這不是一個完整的答案 –
您可以使用CASE
來獲取不同的組合並獲取相應的最小ID並僅提取這些記錄。
像這樣
SELECT T1.*
FROM table1 T1
INNER JOIN
(
SELECT MIN(ID) as ID, CASE WHEN Col1 > Col2 THEN CONCAT(Col1 ,Col2) ELSE CONCAT(Col2,Col1) END GRP
FROM table1
GROUP BY CASE WHEN Col1 > Col2 THEN CONCAT(Col1,Col2) ELSE CONCAT(Col2, Col1) END
) T2
ON T1.ID = T2.ID;
是''A' B'在單個列不同的列或值的值? – ughai
不同列 –
你可以編輯你的問題並添加預期的輸出,它仍然不清楚你想要什麼? –