ホームページ >データベース >mysql チュートリアル >MySQL で LEFT JOIN を使用して行を削除するにはどうすればよいですか?

MySQL で LEFT JOIN を使用して行を削除するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-29 03:53:17308ブラウズ

How Can I Delete Rows Using a LEFT JOIN in MySQL?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。