powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Удаление 1го дубликата строки в таблице SQL
25 сообщений из 34, страница 1 из 2
Удаление 1го дубликата строки в таблице SQL
    #39873932
Hinamura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня форумчане! Возникла срочная задача которую ввиду зелености пока не могу самостоятельно решить.

SQL2008 Имеется таблица: пусть будет - MUSH состоящая всего из трех столбцов и имеющая 35 записей:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
   login      pass     role          
--------------------------------

| vasya    | 1234   | user     |          
| petya    | qwer   | user     | 
| artur    | zxcv   | user     | 
| dima     | dasd   | user     |          
 | vasya    | 1234   | user     |         <----- удалить           
 --------------------------------

По ошибке в таблицу был внесен пользователь который уже там имелся, теперь эту строку нельзя ни отредактировать ни удалить.Дубликат всего один строка 35 дублируется со строкой 13.
Уникального поля по которому хоть как-то можно было идентифицировать нету (столбца id).

Подскажите пожалуйста самый простой и рабочий способ.

Все найденные мною статью в нете представляли собой монструозные запросы с выборкой множества дубликатов, создания дополнительной таблицы итд.
Простого решения подходящего мне я не нашел (
...
Рейтинг: 0 / 0
Удаление 1го дубликата строки в таблице SQL
    #39873935
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
delete a from MUSH a where  login = ... and pass = ... and role ...
insert MUSH select login = ... , pass = ... , role ...
...
Рейтинг: 0 / 0
Удаление 1го дубликата строки в таблице SQL
    #39873939
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hinamura,

Код: sql
1.
2.
3.
4.
with cte as (
  select *, row_number()over(partition by login /*,pass,role*/ order by (select 1)) as rn from MUSH 
)
delete from cte where rn > 1
...
Рейтинг: 0 / 0
Удаление 1го дубликата строки в таблице SQL
    #39873956
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hinamura,

delete top (1) ...
...
Рейтинг: 0 / 0
Удаление 1го дубликата строки в таблице SQL
    #39873966
Hinamura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов,

delete top(1)

Я так понимаю это запрос удалит самую первую строку в таблице? В моем случае мне нужно удалить 35ю.
...
Рейтинг: 0 / 0
Удаление 1го дубликата строки в таблице SQL
    #39873968
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hinamura,

Удалит самую первую строку в таблице, которая удовлетворяет условиям. Условия сами сообразите напиать?
...
Рейтинг: 0 / 0
Удаление 1го дубликата строки в таблице SQL
    #39873974
Minamoto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HinamuraВладислав Колосов,

delete top(1)

Я так понимаю это запрос удалит самую первую строку в таблице? В моем случае мне нужно удалить 35ю.
самую первую не из таблицы, а из запроса, который вы ограничите условием where. ну если не ограничите - тогда, конечно, первую в таблице...
Но лучше воспользуйтесь предложением от court, предварительно проверив, что должно удалиться - для этого замените delete на select *
...
Рейтинг: 0 / 0
Удаление 1го дубликата строки в таблице SQL
    #39873978
Hinamura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич,

Я не понял вашего ответа.
Если я не ошибасю, то с помощью вашего запроса я не смогу удалить строку нужную, т.к. по всем столбцам совпадает с уже имеющейся.
...
Рейтинг: 0 / 0
Удаление 1го дубликата строки в таблице SQL
    #39873979
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MinamotoHinamuraВладислав Колосов,

delete top(1)

Я так понимаю это запрос удалит самую первую строку в таблице? В моем случае мне нужно удалить 35ю.
самую первую не из таблицы, а из запроса, который вы ограничите условием where. ну если не ограничите - тогда, конечно, первую в таблице...В таблице нет первой записи!
...
Рейтинг: 0 / 0
Удаление 1го дубликата строки в таблице SQL
    #39873983
Hinamura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа я полный ноль в написании запросов, предложите рабочий скрипт где нужно ничего исправлять добавлять условия итд.
...
Рейтинг: 0 / 0
Удаление 1го дубликата строки в таблице SQL
    #39873985
1C Developer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HinamuraГавриленко Сергей Алексеевич,

Я не понял вашего ответа.
Если я не ошибасю, то с помощью вашего запроса я не смогу удалить строку нужную, т.к. по всем столбцам совпадает с уже имеющейся.

Сделайте полный бекап перед операцией и убедитесь, что он рабочий!
...
Рейтинг: 0 / 0
Удаление 1го дубликата строки в таблице SQL
    #39873986
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HinamuraГоспода я полный ноль в написании запросов, предложите рабочий скрипт где нужно ничего исправлять добавлять условия итд.Если вы полный ноль, то как вы поймете, что предложенный крипт правильный и не удалит вам, скажем, все записи в таблице?
...
Рейтинг: 0 / 0
Удаление 1го дубликата строки в таблице SQL
    #39873996
Minamoto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapВ таблице нет первой записи!
А DBCC PAGE мне говорит, что есть :)

Я согласен с вами, что нельзя однозначно определить, какая строка будет возвращена первой и удалена, но какая-то все равно будет.
...
Рейтинг: 0 / 0
Удаление 1го дубликата строки в таблице SQL
    #39874002
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hinamura,

написано всё выше

Код: sql
1.
delete top (1) from MUSH a where  login = ... and pass = ... and role ...
...
Рейтинг: 0 / 0
Удаление 1го дубликата строки в таблице SQL
    #39874020
Hinamura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов,

Ваш скрипт выдает Incorrect syntax near the keyword 'from'
...
Рейтинг: 0 / 0
Удаление 1го дубликата строки в таблице SQL
    #39874032
Hinamura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQL2016

Все предложенные варианты выдают синтаксические ошибки
...
Рейтинг: 0 / 0
Удаление 1го дубликата строки в таблице SQL
    #39874038
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а в ssms никак не удалить?
...
Рейтинг: 0 / 0
Удаление 1го дубликата строки в таблице SQL
    #39874040
Minamoto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HinamuraSQL2016

Все предложенные варианты выдают синтаксические ошибки

Код: sql
1.
delete top (1) FROM a from #MUSH a where  login = 'vasya'
...
Рейтинг: 0 / 0
Удаление 1го дубликата строки в таблице SQL
    #39874041
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HinamuraSQL2016

Все предложенные варианты выдают синтаксические ошибки
значит, база в совместимости 80 и ей не светит row_number,
а топ только если без скобок.
короче, реализуйте вариант Гавриленко, он везде катит
...
Рейтинг: 0 / 0
Удаление 1го дубликата строки в таблице SQL
    #39874045
Hinamura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Minamoto,

Выдает incorrect syntax near '='

Но на select работает
...
Рейтинг: 0 / 0
Удаление 1го дубликата строки в таблице SQL
    #39874054
Hinamura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yasha123,

База в режиме совместимости sql2008(100)

Вариант Гавриленко сыплет ошибками (я с delete пока не тороплюсь правда - вставляю select)

Зы. А что, если я руками через ssms руками добавлю столбец еще один с нумерацией, чтобы у дубликата появилось уникальное поле, потом удалю дубликат и после удалю столбец за ненадобностью?
...
Рейтинг: 0 / 0
Удаление 1го дубликата строки в таблице SQL
    #39874055
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
set rowcount 1
delete from MUSH where login = ... and pass = ... and role = ...
set rowcount 0
...
Рейтинг: 0 / 0
Удаление 1го дубликата строки в таблице SQL
    #39874057
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm,

он так и пишет - с точками. Не догадывается значения указать.
...
Рейтинг: 0 / 0
Удаление 1го дубликата строки в таблице SQL
    #39874070
Hinamura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов,

Я пишу
Set rowcount 1
delete from mush where login = 'vasya' and pass = '1234' and role = 'user'
Set rowcount 0

Выдает: incorrect syntax near the keyword 'from'
...
Рейтинг: 0 / 0
Удаление 1го дубликата строки в таблице SQL
    #39874072
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тяжелый случай... Раз буквы в запросе не понятны, их надо взять и выкинуть, так, да?
...
Рейтинг: 0 / 0
25 сообщений из 34, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Удаление 1го дубликата строки в таблице SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]