我的表中的数据包含重复行,但顺序不同(row1.column1.value = row2.column2.value,反之亦然),例如:
1 A B
2 B A
3 B C
4 C B
5 A C
6 C A
...
从这个表中我想获得唯一的数据(意味着没有其他行一起具有这两个值),例如:
1 A B
3 B C
6 C A
...
有人可以帮我这个吗?提前谢谢!
答案 0 :(得分:1)
您可以使用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;
答案 1 :(得分:-1)
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
);