En MySQL puedes usar la sintaxis
DELETE t1,t2
FROM table1 AS t1
INNER JOIN table2 t2 ...
INNER JOIN table3 t3 ...
¿Cómo hago lo mismo en SQL Server?
sql
sql-server
tsql
Byron Whitlock
fuente
fuente
Siempre puede configurar eliminaciones en cascada en las relaciones de las tablas.
Puede encapsular las múltiples eliminaciones en un procedimiento almacenado.
Puede utilizar una transacción para garantizar una unidad de trabajo.
fuente
Puede usar la sintaxis JOIN en la cláusula FROM en DELETE en SQL Server, pero aún así elimina solo de la primera tabla y su extensión Transact-SQL patentada, que es alternativa a la subconsulta.
De ejemplo aquí :
fuente
Ejemplo para eliminar algunos registros de la tabla maestra y los registros correspondientes de dos tablas de detalle:
fuente
SELECT INTO #DeleteIds
lugar deCREATE TABLE 'DeleteIds
seguido deINSERT INTO 'DeleteIds...
?Me pregunto ... ¿es eso realmente posible en MySQL? eliminará t1 y t2? o simplemente entendí mal la pregunta.
Pero si solo desea eliminar table1 con múltiples condiciones de combinación, simplemente no alias la tabla que desea eliminar
esta:
debe escribirse así para que funcione en MSSQL:
para contrastar cómo los otros dos RDBMS comunes realizan una operación de eliminación:
http://mssql-to-postgresql.blogspot.com/2007/12/deleting-duplicates-in-postgresql-ms.html
fuente
Básicamente, no, tiene que hacer tres declaraciones de eliminación en una transacción, los niños primero y luego los padres. La configuración de eliminaciones en cascada es una buena idea si esto no es algo único y su existencia no entrará en conflicto con ninguna configuración de disparador existente.
fuente
En el servidor SQL no hay forma de eliminar varias tablas usando join. Por lo tanto, primero debe eliminar del niño antes de eliminar el formulario principal.
fuente
Esta es una forma alternativa de eliminar registros sin dejar huérfanos.
fuente
Todo ha sido señalado. Simplemente use
DELETE ON CASCADE
en el padretable
o elimínelo delchild-table
alparent
.fuente
Como Aaron ya ha señalado, puede establecer el comportamiento de eliminación en CASCADA y eso eliminará los registros secundarios cuando se elimine un registro principal. A menos que desee que suceda algún otro tipo de magia (en cuyo caso los puntos 2, 3 de la respuesta de Aaron serían útiles), no veo por qué necesitaría eliminar con combinaciones internas.
fuente
Para construir sobre la respuesta de John Gibb, para eliminar un conjunto de datos en dos tablas con una relación FK:
fuente
fuente
$ sql = "DELETE FROM
basic_tbl
,education_tbl
,personal_tbl
,address_tbl
,department_tbl
EL USObasic_tbl
,education_tbl
,personal_tbl
,address_tbl
,department_tbl
DONDEb_id
=e_id
=p_id
=a_id
=d_id
= '" $ id.. "' "; $ rs = mysqli_query ($ con, $ sql);fuente