Как удалить из нескольких таблиц, используя INNER JOIN на сервере SQL - PullRequest
101 голосов
/ 24 апреля 2009

В MySQL вы можете использовать синтаксис

DELETE t1,t2 
FROM table1 AS t1 
INNER JOIN table2 t2 ...
INNER JOIN table3 t3 ...

Как мне сделать то же самое в SQL Server?

Ответы [ 13 ]

0 голосов
/ 24 октября 2017

Для построения на основе ответа Джона Гибба, для удаления набора данных в двух таблицах с отношением FK:

--*** To delete from tblMain which JOINs to (has a FK of) tblReferredTo's PK  
--       i.e.  ON tblMain.Refer_FK = tblReferredTo.ID
--*** !!! If you're CERTAIN that no other rows anywhere also refer to the 
--      specific rows in tblReferredTo !!!
BEGIN TRAN;

    --*** Keep the ID's from tblReferredTo when we DELETE from tblMain
    DECLARE @tblDeletedRefs TABLE ( ID INT );
    --*** DELETE from the referring table first
    DELETE FROM tblMain 
    OUTPUT DELETED.Refer_FK INTO @tblDeletedRefs  -- doesn't matter that this isn't DISTINCT, the following DELETE still works.
    WHERE ..... -- be careful if filtering, what if other rows 
                --   in tblMain (or elsewhere) also point to the tblReferredTo rows?

    --*** Now we can remove the referred to rows, even though tblMain no longer refers to them.
    DELETE tblReferredTo
    FROM   tblReferredTo INNER JOIN @tblDeletedRefs Removed  
            ON tblReferredTo.ID = Removed.ID;

COMMIT TRAN;
0 голосов
/ 17 июля 2013

$ sql = "УДАЛИТЬ ИЗ basic_tbl, education_tbl, personal_tbl, address_tbl, department_tbl С ПОМОЩЬЮ basic_tbl education_tbl, personal_tbl, address_tbl, department_tbl ГДЕ * * = 1011 e_id = p_id = a_id = d_id = ' "$ ID."' «; $ Rs = mysqli_query ($ жулик, $ SQL);

0 голосов
/ 13 февраля 2012
DELETE     TABLE1 LIN
FROM TABLE1 LIN
INNER JOIN TABLE2 LCS ON  CONDITION
WHERE CONDITION
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...