Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Почему то не работает запрос на удаление одинаковых строк.  [new]
Ferum1
Member

Откуда:
Сообщений: 121
Добрый день!

Почему то ошибки при запуске запроса...
Взято с сайта [url=]http://npk-kaluga.ru/WorkDoubleRec_MSSQL.htm[/url]

Delete from t from tovary t, tovary v

where t.tovar = v.tovar

and t.id > v.id


Сообщение 208, уровень 16, состояние 1, строка 1
Недопустимое имя объекта "tovar".


Так же объясните пожалуйста как работает конструкция строки с "Delete from t from tovary t, tovary v"

Так же когда использовал запрос

Select Tovar, Count(*) from Tovary Group by Tovar having Count(*) > 1


Почему то просто "from Tovary" не работает, надо "from [MySampleBase].[dbo].[Tovary]"

Может в этом же проблема и строки "Delete from t from tovary t, tovary v"?
27 мар 18, 16:17    [21290541]     Ответить | Цитировать Сообщить модератору
 Re: Почему то не работает запрос на удаление одинаковых строк.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Ferum1,
1.
Delete t from tovary t, tovary v

2. ну и такой синтаксиси как "tovary t, tovary v" "устаревший" и часто ведёт к ошибкам
27 мар 18, 16:20    [21290553]     Ответить | Цитировать Сообщить модератору
 Re: Почему то не работает запрос на удаление одинаковых строк.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
автор
Почему то просто "from Tovary" не работает, надо "from [MySampleBase].[dbo].[Tovary]"

вы не в той базе
USE [MySampleBase]
потом можно без базы, схему указывать всегда рекомендуется
27 мар 18, 16:21    [21290560]     Ответить | Цитировать Сообщить модератору
 Re: Почему то не работает запрос на удаление одинаковых строк.  [new]
Ferum1
Member

Откуда:
Сообщений: 121
TaPaK
Ferum1,
1.
Delete t from tovary t, tovary v

2. ну и такой синтаксиси как "tovary t, tovary v" "устаревший" и часто ведёт к ошибкам


Я не совсем понимаю синтаксис, что означают t и v? Так же ругань на t как недопустимое имя объекта..
27 мар 18, 16:36    [21290628]     Ответить | Цитировать Сообщить модератору
 Re: Почему то не работает запрос на удаление одинаковых строк.  [new]
Kopelly
Member

Откуда: Красноярск
Сообщений: 289
Ferum1
Я не совсем понимаю синтаксис, что означают t и v? Так же ругань на t как недопустимое имя объекта..

t и v - "алиасы".
Может на данном этапе так будет проще понять:

Delete [Похожий] from tovary [Похожий], tovary [Исходный]

where [Похожий].tovar = [Исходный].tovar

and [Похожий].id > [Исходный].id


Можно расшифровать: удалить из [tovary] (похожий) если есть [tovary] с тем же значением [tovar] и меньшим [id]
27 мар 18, 16:45    [21290669]     Ответить | Цитировать Сообщить модератору
 Re: Почему то не работает запрос на удаление одинаковых строк.  [new]
Ferum1
Member

Откуда:
Сообщений: 121
Спасибо всем, разобрался!
27 мар 18, 17:42    [21290928]     Ответить | Цитировать Сообщить модератору
 Re: Почему то не работает запрос на удаление одинаковых строк.  [new]
Ferum1
Member

Откуда:
Сообщений: 121
Еще вопрос, есть ли у таблицы уникальный индекс по умолчанию и как к нему обратиться, что бы не создавать специально столбец id?
27 мар 18, 17:45    [21290936]     Ответить | Цитировать Сообщить модератору
 Re: Почему то не работает запрос на удаление одинаковых строк.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31326
Ferum1
Еще вопрос, есть ли у таблицы уникальный индекс по умолчанию и как к нему обратиться, что бы не создавать специально столбец id?
Нет
27 мар 18, 18:27    [21291092]     Ответить | Цитировать Сообщить модератору
 Re: Почему то не работает запрос на удаление одинаковых строк.  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Ferum1,

WITH CTE(N) AS(SELECT ROW_NUMBER()OVER(PARTITION BY tovar ORDER BY id) FROM tovary)
DELETE CTE WHERE N>1;


P.S. Завязывайте с запятой во FROMе!
27 мар 18, 19:35    [21291209]     Ответить | Цитировать Сообщить модератору
 Re: Почему то не работает запрос на удаление одинаковых строк.  [new]
Ferum1
Member

Откуда:
Сообщений: 121
Спасибо коллеги, буду разбираться)
29 мар 18, 00:03    [21294731]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить