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

Подскажите, что означает следующая конструкция, в гугле не нашел:
DELETE FROM a
FROM a join b on a.id = b.id


правильно ли я понимаю, что из [а] удалятся строки с id которые есть в [b]?
При этом в таблице [b] изменений не произойдет?
14 ноя 13, 17:13    [15130098]     Ответить | Цитировать Сообщить модератору
 Re: конструкция DELETE FROM FROM  [new]
Konst_One
Member

Откуда:
Сообщений: 11620
DELETE FROM a
FROM table1 a inner join table 2 b on a.id = b.id


вот так лучше писать.
удалятся записи только из table1, если такие найдутся по критерию
14 ноя 13, 17:20    [15130148]     Ответить | Цитировать Сообщить модератору
 Re: конструкция DELETE FROM FROM  [new]
Konst_One
Member

Откуда:
Сообщений: 11620
... table2 b


пробел лишний выше затесался
14 ноя 13, 17:21    [15130157]     Ответить | Цитировать Сообщить модератору
 Re: конструкция DELETE FROM FROM  [new]
Ivan_1234
Guest
Спасибо!

под table1 и table2 понимаются реальные имена таблиц, для которых устанавливаются алиасы a и b соответственно?

А принципиально (в смысле скорости) это отличается от конструкции:

DELETE FROM a WHERE a.id in (SELECT b.id FROM b)
14 ноя 13, 17:36    [15130270]     Ответить | Цитировать Сообщить модератору
 Re: конструкция DELETE FROM FROM  [new]
Konst_One
Member

Откуда:
Сообщений: 11620
скорость меряйте актуальными планами выполнения и статистикой
14 ноя 13, 17:40    [15130298]     Ответить | Цитировать Сообщить модератору
 Re: конструкция DELETE FROM FROM  [new]
iap
Member

Откуда: Москва
Сообщений: 47105
Зачем нужен этот первый FROM - никогда не понимал.
Как и INTO в INSERTе. Они опционны, а всё равно пишут...
Понимаю, что это в стандарте так написано, но зачем?

Во втором FROMе можно прописать много джойнов с многими таблицами.
Написать то же самое с помощью IN или EXISTS будет затруднительно.
Да и результат будет разным в общем случае.
14 ноя 13, 18:10    [15130476]     Ответить | Цитировать Сообщить модератору
 Re: конструкция DELETE FROM FROM  [new]
iap
Member

Откуда: Москва
Сообщений: 47105
iap
Зачем нужен этот первый FROM - никогда не понимал.
Как и INTO в INSERTе. Они опционны, а всё равно пишут...
Понимаю, что это в стандарте так написано, но зачем?

Во втором FROMе можно прописать много джойнов с многими таблицами.
Написать то же самое с помощью IN или EXISTS будет затруднительно.
Да и результат будет разным в общем случае.
Результат выборки с JOINом и IN, я имею в виду.
Ясно, что DELETEу всё равно, сколько раз одна и та же строка встречается в выборке...
14 ноя 13, 18:13    [15130501]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить