как я могу удалить двойные записи другого столбца - PullRequest
0 голосов
/ 13 октября 2011

с другой формой у меня есть таблица как

rowsid     source_row   same_as_row 

row1       1                18    

row2       3                 18

row3       18                1

row4       18                3

я хочу только улучшить строки3 и строку4:

row3       18                1

row4       18                3

какой запрос! удалить запрос row3 и row4 .help

Ответы [ 4 ]

2 голосов
/ 13 октября 2011
DELETE FROM table 
GROUP BY sourcerow
HAVING COUNT(*) > 1 

Это должно быть сделано, если вы ищете только повторяющиеся значения в sourcerow столбце

1 голос
/ 13 октября 2011
select 
    rowsid, source_row, same_as_row
from tablename t1
where not exists 
(
    select * from tablename t2
    where t2.source_row = t1.same_as_row and t2.same_as_row = t1.source_row and t1.rowsid > t2.rowsid)
)
1 голос
/ 13 октября 2011

РЕДАКТИРОВАТЬ : Ну, взорвать меня (предыдущий ответ удален)

Так как двойное вложение работает, я бы так и сделал (хотя частьэто очень избыточно с логической точки зрения)

DELETE
  yourTable
FROM
  yourTable
INNER JOIN
  (SELECT * FROM (SELECT same_as_row FROM yourTable GROUP BY same_as_row)) as lookup
    ON lookup.same_as_row = yourTable.source_row
WHERE
    source_row > same_as_row
0 голосов
/ 13 октября 2011

УДАЛЕНИЕ ИЗ таблицы GROUP BY rowid, source_row, same_as_row HAVING COUNT (*)> 1

...