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

Откуда:
Сообщений: 10
Относительно простой запрос на удаление выдает ошибки:

delete from Fr_Gar_Sostav1 f1 where f1.InventoryID not in (select f2.InventoryOwnerID from Fr_Gar_Sostav1 f2 where f2.Cat=28) and f1.Cat=28

Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near 'f1'.
Server: Msg 156, Level 15, State 1, Line 2
Incorrect syntax near the keyword 'and'.

При этом выборка работает без проблем:


select * from Fr_Gar_Sostav1 f1 where f1.InventoryID not in (select f2.InventoryOwnerID from Fr_Gar_Sostav1 f2 where f2.Cat=28) and f1.Cat=28

Помогите понять, что не так, заранее спасибо:)
23 янв 13, 14:36    [13815564]     Ответить | Цитировать Сообщить модератору
 Re: Помогите понять в чем ошибка запроса на удаление?  [new]
Glory
Member

Откуда:
Сообщений: 104760
delete f1 from Fr_Gar_Sostav1 f1 where f1.InventoryID not in (select f2.InventoryOwnerID from Fr_Gar_Sostav1 f2 where f2.Cat=28) and f1.Cat=28
23 янв 13, 14:38    [13815583]     Ответить | Цитировать Сообщить модератору
 Re: Помогите понять в чем ошибка запроса на удаление?  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
Dougy
Относительно простой запрос на удаление выдает ошибки:

delete from Fr_Gar_Sostav1 f1 where f1.InventoryID not in (select f2.InventoryOwnerID from Fr_Gar_Sostav1 f2 where f2.Cat=28) and f1.Cat=28

Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near 'f1'.
Server: Msg 156, Level 15, State 1, Line 2
Incorrect syntax near the keyword 'and'.

При этом выборка работает без проблем:


select * from Fr_Gar_Sostav1 f1 where f1.InventoryID not in (select f2.InventoryOwnerID from Fr_Gar_Sostav1 f2 where f2.Cat=28) and f1.Cat=28

Помогите понять, что не так, заранее спасибо:)
Может попробовать так:
--select *
delete f1
from Fr_Gar_Sostav1 f1 where f1.InventoryID not in (select f2.InventoryOwnerID from Fr_Gar_Sostav1 f2 where f2.Cat=28) and f1.Cat=28
23 янв 13, 14:39    [13815591]     Ответить | Цитировать Сообщить модератору
 Re: Помогите понять в чем ошибка запроса на удаление?  [new]
Dougy
Member

Откуда:
Сообщений: 10
Спасибо большое! заработало:)
23 янв 13, 14:39    [13815595]     Ответить | Цитировать Сообщить модератору
 Re: Помогите понять в чем ошибка запроса на удаление?  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Алиасы могут объявляться только во FROM и MERGE
DELETE f1
FROM Fr_Gar_Sostav1 f1
WHERE f1.Cat=28
AND NOT EXISTS(SELECT * FROM Fr_Gar_Sostav1 f2 where f2.Cat=28 AND f2.InventoryOwnerID=f1.InventoryID);
Но это не тот FROM, который сразу после DELETE!
23 янв 13, 14:41    [13815608]     Ответить | Цитировать Сообщить модератору
 Re: Помогите понять в чем ошибка запроса на удаление?  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Dougy
Спасибо большое! заработало:)
Ж)))Осторожней с NOT IN()
Лучше NOT EXISTS()

Сообщение было отредактировано: 23 янв 13, 14:45
23 янв 13, 14:44    [13815643]     Ответить | Цитировать Сообщить модератору
 Re: Помогите понять в чем ошибка запроса на удаление?  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Что-то тег изуродовался :((

Dougy
Спасибо большое! заработало:)
Осторожней с NOT IN()
Лучше NOT EXISTS()
23 янв 13, 14:46    [13815656]     Ответить | Цитировать Сообщить модератору
 Re: Помогите понять в чем ошибка запроса на удаление?  [new]
Dougy
Member

Откуда:
Сообщений: 10
Хорошо, спасибо за совет:)
23 янв 13, 14:48    [13815676]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить