Поиск всех повторяющихся строк в таблице - PullRequest
3 голосов
/ 19 октября 2011

Допустим, у меня есть следующая таблица

first   last     value
tony    jones     1
james   guy       5  
sara    miller    6
tony    jones     2
sara    miller    3
joe     cool      4
david   marting   7

Есть ли команда для быстрого запроса всех дублирующихся строк.

Так что я бы в итоге получил:

first   last     value
tony    jones     1
tony    jones     2
sara    miller    6
sara    miller    3

Справка!

Это запрос, который мне нужно добавить:

SELECT l.create_date, l.id, c.first_name, c.last_name, c.state, c.zipcode, 
l.source AS 'affiliateId', ls.buyer, ls.amount FROM lead_status AS ls 
INNER JOIN leads AS l ON l.id = ls.lead_id 
INNER JOIN contacts AS c ON c.lead_id = l.id 
WHERE ls.discriminator = 'AUTO_POST' AND l.affiliate_id=1003 
AND ls.winner =1 AND l.test =0 AND l.create_date BETWEEN '2011-10-03' AND '2011-10-19';

Ответы [ 4 ]

4 голосов
/ 19 октября 2011
SELECT t1.* 
FROM <table> t1, <table> t2 
WHERE t1.first=t2.first AND 
  t1.last=t2.last AND 
  t1.value<>t2.value
;
3 голосов
/ 19 октября 2011

Это должно делать это эффективно, при условии правильной индексации и уникальности значения для каждой строки:

SELECT first, 
       last, 
       value 
FROM MyTable AS T1
WHERE EXISTS ( -- Is there another row with the same first/last name,
  SELECT *     -- but a different value
  FROM MyTable AS T2 
  WHERE T2.first=T1.first 
    AND T2.last=T1.last 
    AND T2.value<>T1.value
)
2 голосов
/ 19 октября 2011

Если вы только хотите повторить ....

   select t2.first, t2.last , t1.value from (
      select first, last, count(*) from your_table
      group by first, last
      having count(*)>1
    ) t2 inner join your_table t1 on (t1.first=t2.first and t1.last=t2.last)

Дополнительно

select first, last , count(*) from your_table
group by first, last

Вернет первый, последний и дополнительный столбец с количеством повторений записи

0 голосов
/ 19 октября 2011

Как насчет использования "SELECT DISTINCT ..."?Разве это не делает работу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...