我有这个查询
SELECT id, timeOrdered, order_desc, firstname, lastname
FROM `db`.`myTable`
WHERE `myTable`.`customer_number` IN (100, 101, 102, 103, 104, 105)
我正在尝试查找哪些是重复记录。如果timeOrdered,order_desc,firstname,lastname与其dupe相同。
对此的查询是什么? 感谢
答案 0 :(得分:11)
要查看哪些值有重复项:
SELECT t.order_desc,
t.firstname,
t.lastname
FROM db.mytable t
WHERE t.customer_number IN (100, 101, 102, 103, 104, 105)
GROUP BY t.order_desc, t.firstname, t.lastname, t.timeordered
HAVING COUNT(*) > 1
要查看与这些重复项相关的整个记录:
SELECT x.*
FROM db.mytable x
WHERE EXISTS(SELECT NULL
FROM db.mytable t
WHERE t.customer_number IN (100, 101, 102, 103, 104, 105)
AND t.order_desc = x.order_desc
AND t.firstname = x.firstname
AND t.lastname = x.lastname
AND t.timeordered = x.timeordered
GROUP BY t.order_desc, t.firstname, t.lastname, t.timeordered
HAVING COUNT(*) > 1)
WHERE x.customer_number IN (100, 101, 102, 103, 104, 105)
答案 1 :(得分:3)
SELECT DISTINCT
t1.id
FROM
mytable t1
INNER JOIN mytable t2 ON
t1.timeordered = t2.timeordered AND
t1.order_desc = t2.order_desc AND
t1.firstname = t2.firstname AND
t1.lastname = t2.lastname AND
t1.id <> t2.id