DELETE със JOIN
6 отговора
0 прегледа
DELETE със JOIN
Гледам разни примери за командата DELETE но всички са доста елементарини и в WHERE има само изрази с колони от таблицата, в която се трие. Как ще се направи изтриване с JOIN? Например, имам две таблици: Table1 и Table2. В първата - колони workerID и Sum, във втората workID и Status. Как може да се направи нещо от вида
Delete from table1 where workerid=workid and status='Active'
Delete from table1 where workerid=workid and status='Active'
Re: DELETE със JOIN
Винаги можеш да заменис JOIN със IN или с EXISTS така например
Иначе в T-SQL имаш JOIN при DELETE да не се зориш. Не работи на VIEW-та с INSTEAD OF тригери, но това надали те касае.
cheers,
</wqw>
[линк]
DELETE Table1
WHERE EXISTS (SELECT *
FROM Table2
WHERE WorkID = Table1.WorkerID
AND Status = 'Active')
Иначе в T-SQL имаш JOIN при DELETE да не се зориш. Не работи на VIEW-та с INSTEAD OF тригери, но това надали те касае.
cheers,
</wqw>
[линк]
Re: DELETE със JOIN
Зависи кой сървър ползваш.
MySQL поддържа два варианта на такъв синтаксис:
DELETE FROM table1 USING table1 JOIN table2 ON ... WHERE ....
или
DELETE table1 FROM table1 JOIN table2 ON .. WHERE ...
[линк]
за другите сървъри не знам
salle.online.bg/sig
MySQL поддържа два варианта на такъв синтаксис:
DELETE FROM table1 USING table1 JOIN table2 ON ... WHERE ....
или
DELETE table1 FROM table1 JOIN table2 ON .. WHERE ...
[линк]
за другите сървъри не знам
salle.online.bg/sig
Re: DELETE със JOIN
Втория синтаксис се поддържа от MSSQL. Същия синтаксис е и при UPDATE.
[линк]
[линк]
Re: DELETE със JOIN
В PostgreSQL се поддържа някаква вариация на първия синтаксис:
DELETE FROM x USING y WHERE x.id=y.id;
Иначе твоето предложение с подзаявките ми се струва най-чисто.
"Договор, подписан с Русия, струва по-малко от хартията, върху която е написан!" - Бисмарк
DELETE FROM x USING y WHERE x.id=y.id;
Иначе твоето предложение с подзаявките ми се струва най-чисто.
"Договор, подписан с Русия, струва по-малко от хартията, върху която е написан!" - Бисмарк
Редактирано от Dakota на
Re: DELETE със JOIN
Аз в такива случаи предпочитам EXIST или IN.
General Protection Fault in module 0xDEEBAA. Рестартирайте държавата!
General Protection Fault in module 0xDEEBAA. Рестартирайте държавата!
Re: DELETE със JOIN
Опитай така:
DELETE FROM TableA
FROM
TableA a
INNER JOIN TableB b
ON b.BId = a.BId
AND [филтъра, който искаш да използваш]
DELETE FROM TableA
FROM
TableA a
INNER JOIN TableB b
ON b.BId = a.BId
AND [филтъра, който искаш да използваш]