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 SELECTlos 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'
( statuspertenece a la jobtabla 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
jobON deadline.job_id = job.job_id WHEREstatus=' szaml 'en la línea 1
¿Cómo puedo convertir mi SELECTen una DELETEconsulta de trabajo ?
fuente

DELETEyFROM, 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
DELETEpara que la consulta no sea ambigua. UsarIncon subconsultas hace que todo sea mucho más lento. Es mejor evitarlo.DELETEyFROM.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