最適化で構成されたデータを削除するための方法
お世話になります。初歩的な問題で恐縮致しますが、
IDで紐づいたデータ(最適化されたデータ)を削除するためのSQLを調べています。
usersとscoresはusers.id = scores.user_idで紐づくものとします。
各テーブルのSQLはこちら
create table users ( id int primary key auto_increment, name varchar(255) default null, `group` varchar(10) default null ); insert into users values (null, "Johon", null), (null, "Suzuki", null), (null, "Alice", null), (null, "Satou", null), (null, "Tanaka", null); create table scores ( id int primary key auto_increment, test_name varchar(255) default null, user_id int not null, score int not null ); insert into scores values (null, "testA", 1, 76), (null, "testA", 2, 82), (null, "testA", 3, 66), (null, "testA", 4, 98), (null, "testA", 5, 55);
ここで、scores.scoreが 80 以上のユーザはusersテーブルから削除する場合、どのようなSQLとなるのでしょうか?
DELETE users FROM users LEFT JOIN scores ON scores.user_id = users.id WHERE scores.score >= 80 DELETE FROM users WHERE id in( SELECT user_id FROM scores WHERE score >= 80 )
これまで、お恥ずかしながら、scoresテーブルから該当のuser_idを抽出し、その値を基にusersテーブル内の該当データを削除するという、2度のSQLを発行していましたが、色々調べ、以下のような1度のSQLでも削除できるまで確認しました。
しかし、初めてのことで、結果は同じでもどちらが良いのか判断できず、アドバイス頂ければと投稿いたしました。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー