我有一张桌子:
--id---name---col1--col2--col3...-colN--created.
--1---myName---col1--col2--col3...-colN--created1.
--2---myName---col1--col2--col3...-colN--created2.
--3---myOtherName---Othercol1--Othercol2--Othercol3...-OthercolN--created3.
id
和created
字段是唯一的。
其余行中有重复项-完全相同的一组值(名称+ col1 + col2 + col3 + .. + colN)。
但是,很少有几行是完全唯一的。 如何找到它们(在我的示例中为row 3
)?
答案 0 :(得分:1)
您可以使用NOT EXISTS
和相关子查询从同一表中选择ID不同但值相等的行。
SELECT *
FROM elbat t1
WHERE NOT EXISTS (SELECT *
FROM elbat t2
WHERE t2.id <> t1.id
AND t2.col1 = t1.col1
AND t2.col2 = t1.col2
AND t2.col3 = t1.col3
...
AND t2.coln = t1.coln);
答案 1 :(得分:1)
您可以按必须唯一的字段分组,然后选择计数等于1的行。
SELECT *
FROM
mytable
INNER JOIN (
SELECT id
FROM
mytable
GROUP BY
col1, col2, col3
HAVING
COUNT(*) = 1
) t
ON mytable.id = t.id;
有许多解决方案。根据数据量和性能要求,您可以添加索引并测试几个解决方案以获得最佳结果。