![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
удилить дубликаты строк MS SQL Server
ekto © (2008-11-18 14:57:00)всем привет!
сабж.
пока сделал следующее:
SELECT *
FROM text_to_tree
WHERE tree_id IN (SELECT tree_id
FROM text_to_tree
GROUP BY tree_id, text_id
HAVING COUNT(*) >1)
AND text_id IN (SELECT text_id
FROM text_to_tree
GROUP BY tree_id, text_id
HAVING COUNT(*) >1)
ORDER BY tree_id, text_id
получаю список дубликатов. А что дальше делать?
Подскажите, плиз.
Anatoly Podgoretsky (2008-11-18 17:04:00) [1]> ekto (18.11.2008 16:34:18) [18]
Ты не только не отыскал, но ты еще и не там задаешь вопрос, правда его и задавать не надо. Иди на SQL.RU у них там это вопрос входит в TOP 10 FAQ
Правда тебя там будут бить за подобную методику обсуждения.
stas (2008-11-18 16:37:00) [2]Добавь поле id - автоинкрементное и оставь те у которых минимальный id
ekto (2008-11-18 16:34:00) [3]
> Anatoly Podgoretsky © (18.11.08 16:23) [17]
не отыскал:(
Anatoly Podgoretsky (2008-11-18 16:23:00) [4]> ekto (18.11.2008 16:21:16) [16]
В 2005 есть нумерация строк.
ekto (2008-11-18 16:21:00) [5]
> Anatoly Podgoretsky © (18.11.08 15:55) [14]
2005
b z (2008-11-18 16:19:00) [6]http://support.microsoft.com/kb/139444/ru
похоже на > clickmaker © (18.11.08 15:18) [8]:)
Anatoly Podgoretsky (2008-11-18 15:55:00) [7]> Ega23 (18.11.2008 15:52:13) [13]
Он просто плюет, когда его спрашивают какой у него сервер, наверно думает, что есть только один сервер.
Ega23 (2008-11-18 15:52:00) [8]
> ps. Не, однако че-бы в сиквелсервере не ввести уник строки,
> как интерьейзе?
Они там есть. Просто ты не умеешь ими пользоваться...
ekto (2008-11-18 15:29:00) [9]
> Palladin © (18.11.08 15:26) [11]
это-то я знаю:)
Palladin (2008-11-18 15:26:00) [10]ну а на самом деле правильно: не допускать появления этих строк на момент заполнения таблицы
Palladin (2008-11-18 15:24:00) [11]
> clickmaker © (18.11.08 15:18) [8]
угу, так даже оптимальней...
ekto (2008-11-18 15:21:00) [12]клева, спасибки
но эт один фик с курсором?
clickmaker (2008-11-18 15:18:00) [13]переименуй таблицу в xxx_dup, н-р
исходную создай заново
далее вставляй в свежесозданную из xxx_dup с проверкой if not exists
Anatoly Podgoretsky (2008-11-18 15:17:00) [14]А сервер у тебя какой?
ekto (2008-11-18 15:13:00) [15]
> Palladin © (18.11.08 15:10) [5]
понятно, спасибо.
ps. Не, однако че-бы в сиквелсервере не ввести уник строки, как интерьейзе?
Palladin (2008-11-18 15:10:00) [16]
> А что дальше делать?
простым запросом - ничего
выбрать с помощью курсора данные, бежать по нему (курсору) вставляя во временную таблицу
помечать строку (ни разу не встретившуюся во временной таблице) флагом "первой строки", остальные флагом "дублей"
удалить все из исходной таблицы
вставить в исходную таблицу все строки из временной с "флагом первой строки"
ekto (2008-11-18 15:09:00) [17]
>
> clickmaker © (18.11.08 15:07) [3]
так, вот я и спрашиваю, как пронумеровать только свои дубликаты:)
clickmaker (2008-11-18 15:07:00) [18]ну если надо оставить один из дублей, значит надо как-то его отличить от остальных, ведь так?
ekto (2008-11-18 15:04:00) [19]
> clickmaker © (18.11.08 15:02) [1]
не, уникальным ключем будут, впоследствии, два поля: tree_id и text_id
clickmaker (2008-11-18 15:02:00) [20]> А что дальше делать?
а какие из дублей требуется удалить?
уникальный ключ есть?