| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MS SQL Server > уточнение по синтаксису.... |
| Автор: setnull 11.12.2007, 20:27 |
| На сколько я понял, в T-SQL в DELETE нельзя давать таблице псевдонимы как то delete from my_table mt where mt.my_field>@my_value во всяком случае, на такую конструкцию он ругается Incorrect syntax near 'mt'., а без mt - работает..... Так а как произвести такую чистку как: ParamName ParamValue p1 7 p1 10 p1 5 p2 3 p2 3 p2 12 delete from may_table mt1 where mt1.ParamValue <> ( select max(mt2.ParamValue) from my_table mt2 where mt2.ParamName = mt1.ParamName ) ???????? |
| Автор: setnull 11.12.2007, 22:40 |
| ОГО!!! Я вот че нашел delete from my_tabel from my_tabel as mt left join (тут можно еще привязать еще че-нибудь....) where (всякие условия....) только я до конца не понял суть... если my_table во втором from'е будет использована больше одного раза, и нее че, будут удалены все записи, формирующие полученную выборку или как? Может то-нить объяснить, че это за конструкция?..... |
| Автор: TaNK 12.12.2007, 09:07 | ||
Добавлено через 1 минуту и 36 секунд inner join - внутреннее соединение left,right,full - outer join внешнеее соединение |
| Автор: under_sun 12.12.2007, 12:36 | ||
Есть вариант удаления, используя табличное выражение:
|
| Автор: LuMee 12.12.2007, 12:39 | ||||
Второй from задает выборку, которая может быть использована при формировании условий для удаления записей из таблицы. Одним словом, запрос:
будет эквивалентен запросу
Кстати, аналогичная конструкция есть и для UPDATE - удобна при обновлении значений полей таблицы с использованием данных из других таблиц. |
| Автор: under_sun 12.12.2007, 13:36 | ||
Проверь, должно работать:
|