如何获取A-B等数据但不包含B-A?

时间:2015-05-29 07:35:51

标签: mysql sql

我的表中的数据包含重复行,但顺序不同(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
...

有人可以帮我这个吗?提前谢谢!

2 个答案:

答案 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;

SQL Fiddle

答案 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
);