1. ホーム
  2. mysql

[解決済み] MySQLでJoinを使った削除

2022-03-17 06:18:22

質問

テーブルを作成するスクリプトは以下の通りです。

CREATE TABLE clients (
   client_i INT(11),
   PRIMARY KEY (client_id)
);
CREATE TABLE projects (
   project_id INT(11) UNSIGNED,
   client_id INT(11) UNSIGNED,
   PRIMARY KEY (project_id)
);
CREATE TABLE posts (
   post_id INT(11) UNSIGNED,
   project_id INT(11) UNSIGNED,
   PRIMARY KEY (post_id)
);

私のPHPコードでは、クライアントを削除するときに、すべてのプロジェクトの投稿を削除したいのです。

DELETE 
FROM posts
INNER JOIN projects ON projects.project_id = posts.project_id
WHERE projects.client_id = :client_id;

posts テーブルに外部キーがない client_id のみです。 project_id . を持つプロジェクト内の投稿を削除したい。 client_id .

投稿が削除されないため、現在動作していません。

解決するには?

のエントリーを削除するように指定するだけです。 posts テーブルを使用します。

DELETE posts
FROM posts
INNER JOIN projects ON projects.project_id = posts.project_id
WHERE projects.client_id = :client_id

EDIT: より詳細な情報は、以下を参照してください。 この代替回答