ホームページ >データベース >mysql チュートリアル >MySQL で LEFT JOIN を使用して行を削除するにはどうすればよいですか?
MySQL で LEFT JOIN を使用した行の削除
MySQL では、LEFT JOIN の作成は、複数のテーブルからデータを取得するための強力なツールとなります。ただし、同じ LEFT JOIN 構文を DELETE 操作に使用しようとすると、あいまいさやエラーが発生する可能性があります。
問題
「期限」があるシナリオを考えてみましょう。 " テーブルと "ジョブ" テーブル。各ジョブにはステータスがあり、特定のステータスは、関連する期限を削除する必要があることを示します。 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'
ただし、同じ LEFT JOIN 構文を使用してこれらの行を削除しようとすると、
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 はエラーをスローします。 .
解決策
行を正常に削除するには、影響を受けるテーブルを明示的に指定する必要があります。これを行うには、テーブル名を DELETE キーワードの前に置きます。
期限行のみの削除
期限行のみを削除するには、次のクエリを使用します。
DELETE `deadline` 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'
期限とジョブを削除する行
期限とジョブ行の両方を削除するには、次のクエリを使用します:
DELETE `deadline`, `job` 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'
ジョブ行のみを削除
Toジョブ行のみを削除するには、次のクエリを使用します:
DELETE `job` 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 で LEFT JOIN を使用して行を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。