我有数据在具有重复行的表,但以不同的顺序(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
不同列 –
你可以编辑你的问题并添加预期的输出,它仍然不清楚你想要什么? –