Usar INNER JOIN en DELETE

Estoy intentando la siguiente condición: si algún préstamo en la tabla de Préstamos tiene Monto Sobresaliente <0, elimine toda la información relevante en la database. Tengo que hacerlo en un solo command y, por lo tanto, he intentado usar INNER JOIN:

DELETE A, B, C, D, E FROM Loans AS T1 INNER JOIN Payments T2 ON T1.LoanID = T2.LoanID INNER JOIN Repayments T3 ON T1.LoanID = T3.LoanID INNER JOIN Histories T4 ON T1.LoanID = T4.LoanID INNER JOIN LoanRequests T5 ON T1.RequestDate = T5.RequestDate AND T1.BID = T5.BID INNER JOIN Commits T6 ON T1.RequestDate = T6.requestDate AND T1.BID = T6.BID WHERE T1.OutstandingAmount < 0 

Sin embargo, este command me da un error de syntax en "ELIMINAR A, B", y ni siquiera estoy seguro de que esto funcione. Cualquier ayuda sería muy apreciada. Gracias.

Como escribió Gordon Linoff en su comentario, solo puede eliminar de una tabla en cada statement de eliminación.

Básicamente tienes 2 opciones:

  1. Úselo en la cascada de eliminación en sus keys externas (probablemente sea lo mejor que puede hacer)

  2. Use una statement de eliminación para cada tabla, pero ajuste todo el process de eliminación en una transacción.

Agregar Eliminar cascada a sus foreign keys significa descartar y volver a crearlas:

 ALTER TABLE dbo.Loans DROP CONSTRAINT FK_Loans_Payments; ALTER TABLE dbo.Loans ADD CONSTRAINT FK_Loans_Payments FOREIGN KEY (LoanID) REFERENCES Payments(LoanID) ON DELETE CASCADE; 

Usar una transacción para envolver declaraciones de eliminación individuales:

 BEGIN TRASACTION BEGIN TRY DELETE c FROM Commits INNER JOIN Loans l ON l.RequestDate = c.RequestDate WHERE l.OutstandingAmount < 0 DELETE lr FROM LoanRequests lr INNER JOIN Loans l ON l.RequestDate = lr.RequestDate WHERE l.OutstandingAmount < 0 -- more of the same... DELETE FROM Loans WHERE OutstandingAmount < 0 COMMIT TRANSACTION END TRY BEGIN CATCH IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION END CATCH