Eu tenho duas tabelas, uma para prazos de trabalho, uma para descrever um trabalho. Cada trabalho pode assumir um status e alguns status significam que os prazos dos trabalhos devem ser excluídos da outra tabela.
Posso facilmente SELECT
os trabalhos / prazos que atendem aos meus critérios com 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
pertence à job
tabela não deadline
)
Mas quando eu gostaria de excluir essas linhas deadline
, o MySQL lança um erro. Minha consulta é:
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'
Erro no MySQL não diz nada:
Você tem um erro na sua sintaxe SQL; verifique o manual que corresponde à versão do servidor MySQL para a sintaxe correta a ser usada perto de 'LEFT JOIN
job
ON deadline.job_id = job.job_id WHEREstatus
=' szaml 'na linha 1
Como transformar minha consulta SELECT
em trabalho DELETE
?
fonte
DELETE
eFROM
, mas a consulta funcionou bem de qualquer maneira quando eu pressionei Go.Se você estiver usando "tabela como", especifique-o para excluir.
No exemplo, excluo todas as tabelas da tabela_1 que não existem na tabela_2.
fonte
Não tenho certeza se esse tipo de subconsulta funciona no MySQL, mas tente. Suponho que você tenha uma coluna de ID na sua tabela de prazos.
fonte
DELETE
que tornar a consulta inequívoca. UsarIn
com subconsultas torna tudo muito mais lento. É melhor evitar.DELETE
eFROM
.Tente o seguinte:
fonte
O MySQL permite que você use a cláusula INNER JOIN na instrução DELETE para excluir linhas de uma tabela e as linhas correspondentes em outra tabela.
Por exemplo, para excluir linhas das tabelas T1 e T2 que atendem a uma condição especificada, use a seguinte instrução:
Observe que você coloca os nomes das tabelas T1 e T2 entre as palavras-chave DELETE e FROM. Se você omitir a tabela T1, a instrução DELETE exclui apenas linhas na tabela T2. Da mesma forma, se você omitir a tabela T2, a instrução DELETE excluirá apenas as linhas da tabela T1.
Espero que esta ajuda.
fonte