Tengo dos tablas, una para los plazos de trabajo, una para describir un trabajo. Cada trabajo puede tomar un estado y algunos estados significan que los plazos de los trabajos deben eliminarse de la otra tabla.
Puedo fácilmente SELECT
los trabajos / plazos que cumplen mis criterios con LEFT JOIN
:
SELECT * FROM `deadline`
LEFT JOIN `job` ON deadline.job_id = job.job_id
WHERE `status` = 'szamlazva'
OR `status` = 'szamlazhato'
OR `status` = 'fizetve'
OR `status` = 'szallitva'
OR `status` = 'storno'
( status
pertenece a la job
tabla no deadline
)
Pero cuando me gustaría eliminar estas filas deadline
, MySQL arroja un error. Mi consulta es:
DELETE FROM `deadline`
LEFT JOIN `job`
ON deadline.job_id = job.job_id
WHERE `status` = 'szamlazva'
OR `status` = 'szamlazhato'
OR `status` = 'fizetve'
OR `status` = 'szallitva'
OR `status` = 'storno'
El error de MySQL no dice nada:
Tiene un error en su sintaxis SQL; consulte el manual que corresponde a la versión de su servidor MySQL para obtener la sintaxis correcta para usar cerca de 'LEFT JOIN
job
ON deadline.job_id = job.job_id WHEREstatus
=' szaml 'en la línea 1
¿Cómo puedo convertir mi SELECT
en una DELETE
consulta de trabajo ?
fuente
DELETE
yFROM
, pero la consulta funcionó bien de todos modos cuando presioné Ir.Si está utilizando "tabla como", especifíquelo para eliminarlo.
En el ejemplo, elimino todas las filas de la tabla_1 que no existen en la tabla_2.
fuente
No estoy seguro de si ese tipo de subconsulta funciona en MySQL, pero pruébelo. Supongo que tiene una columna de ID en su tabla de fechas límite.
fuente
DELETE
para que la consulta no sea ambigua. UsarIn
con subconsultas hace que todo sea mucho más lento. Es mejor evitarlo.DELETE
yFROM
.Prueba esto:
fuente
MySQL le permite utilizar la cláusula INNER JOIN en la instrucción DELETE para eliminar filas de una tabla y las filas coincidentes en otra tabla.
Por ejemplo, para eliminar filas de las tablas T1 y T2 que cumplan una condición específica, utilice la siguiente instrucción:
Observe que coloca los nombres de tabla T1 y T2 entre las palabras clave DELETE y FROM. Si omite la tabla T1, la instrucción DELETE solo elimina filas en la tabla T2. Del mismo modo, si omite la tabla T2, la instrucción DELETE eliminará solo las filas de la tabla T1.
Espero que esto ayude.
fuente