Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
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] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
Ferum1, 1. Delete t from tovary t, tovary v 2. ну и такой синтаксиси как "tovary t, tovary v" "устаревший" и часто ведёт к ошибкам |
27 мар 18, 16:20 [21290553] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
вы не в той базе USE [MySampleBase] потом можно без базы, схему указывать всегда рекомендуется |
||
27 мар 18, 16:21 [21290560] Ответить | Цитировать Сообщить модератору |
Ferum1 Member Откуда: Сообщений: 121 |
Я не совсем понимаю синтаксис, что означают t и v? Так же ругань на t как недопустимое имя объекта.. |
||
27 мар 18, 16:36 [21290628] Ответить | Цитировать Сообщить модератору |
Kopelly Member Откуда: Красноярск Сообщений: 289 |
t и v - "алиасы". Может на данном этапе так будет проще понять: Delete [Похожий] from tovary [Похожий], tovary [Исходный] where [Похожий].tovar = [Исходный].tovar and [Похожий].id > [Исходный].id Можно расшифровать: удалить из [tovary] (похожий) если есть [tovary] с тем же значением [tovar] и меньшим [id] |
||
27 мар 18, 16:45 [21290669] Ответить | Цитировать Сообщить модератору |
Ferum1 Member Откуда: Сообщений: 121 |
Спасибо всем, разобрался! |
27 мар 18, 17:42 [21290928] Ответить | Цитировать Сообщить модератору |
Ferum1 Member Откуда: Сообщений: 121 |
Еще вопрос, есть ли у таблицы уникальный индекс по умолчанию и как к нему обратиться, что бы не создавать специально столбец id? |
27 мар 18, 17:45 [21290936] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31783 |
|
||
27 мар 18, 18:27 [21291092] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
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] Ответить | Цитировать Сообщить модератору |
Ferum1 Member Откуда: Сообщений: 121 |
Спасибо коллеги, буду разбираться) |
29 мар 18, 00:03 [21294731] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |