MySQL で LEFT JOIN を使用した期限の削除
2 つのテーブルに保存されているジョブの期限とジョブの説明を管理するというコンテキストで、問題が発生しました。 LEFT JOIN クエリに基づいて行を削除する場合。これを解決するには、LEFT JOIN を使用して DELETE クエリを実行するための正しい構文を理解することが重要です。
LEFT JOIN ステートメントを使用すると、「左側」のテーブル (この場合は期限) から行を選択し、一致を含めることができます。結合条件に基づいて「正しい」テーブル (この場合はジョブ) から行を取得します。ただし、LEFT JOIN を使用して行を削除するには、クエリ構文に微妙な変更が必要です。
ジョブ テーブルとの LEFT JOIN に基づいて期限テーブルから行を正常に削除するには、テーブルを明示的に指定する必要があります。行が削除されます。考えられるバリエーションは次のとおりです。
期限行のみを削除
期限行のみを削除する場合は、クエリを次のように変更する必要があります。
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 FROM は、 Deadline テーブルから行を削除することを指定します。 LEFT JOIN は、ジョブ テーブルのステータス列に基づいて行をフィルタリングするために使用されます。
期限とジョブの行を削除
期限とジョブの両方を削除する場合LEFT JOIN 基準に基づいて行を取得するには、次のクエリを使用する必要があります:
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';
ここでは、 DELETE 期限、ジョブ FROM は、期限テーブルとジョブ テーブルの両方から行を削除することを指定します。
ジョブ行のみ削除
ジョブのみを削除する場合行を含めますが、期限の行を維持するには、次のクエリを使用する必要があります:
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';
次のことに留意することが重要です。 DELETE ステートメント内のテーブル名の順序は、削除される行に影響を与える可能性があります。
以上がMySQL DELETE クエリで LEFT JOIN を使用して行を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。