1. ホーム
  2. マイスル

[解決済み】MySQL LEFT JOINで行を削除する。

2022-04-10 13:13:35

質問

2つのテーブルがあります。1つはジョブの締め切り、もう1つはジョブを記述するためのものです。各ジョブはステータスを取ることができ、いくつかのステータスは、ジョブの締め切りをもう一方のテーブルから削除する必要があることを意味します。

私は簡単に SELECT を指定することで、条件に合う仕事・期限を表示することができます。 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 に所属しています。 job テーブル・ノット deadline )

しかし、これらの行を deadline MySQLはエラーを投げる。私のクエリは、次のとおりです。

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'

MySQLのエラーは何も言わない。

SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルを参照して、「LEFT JOIN」付近で使用する正しい構文を確認してください。 job ON deadline.job_id = job.job_id WHERE status = 'szaml' at line 1

どうすれば SELECT を動作する DELETE クエリ?

解決方法は?

を適用するテーブルを指定する必要があります。 DELETE .

のみを削除します。 deadline の行があります。

DELETE `deadline` FROM `deadline` LEFT JOIN `job` ....

を削除します。 deadlinejob の行になります。

DELETE `deadline`, `job` FROM `deadline` LEFT JOIN `job` ....

のみを削除します。 job の行があります。

DELETE `job` FROM `deadline` LEFT JOIN `job` ....