1

テーブルからデータを削除しようとしていますが、クエリは次のとおりです。

delete from mybadge where uid=5 and badge_name=(select concat(tag_name,'-Beginner') from tag,post_tags where post_tags.tag_id=tag.tag_id);

selectステートメントで5つのレコードを取得していますが、その5つのレコードをすべて削除したいと思います。

4

3 に答える 3

2

「=」記号の代わりに「in」キーワードを使用

delete from mybadge where uid=5 and badge_name in (select concat(tag_name,'-Beginner') from tag,post_tags where post_tags.tag_id=tag.tag_id);
于 2013-03-18T10:48:36.697 に答える
1

あなたが述べたように、あなたのサブクエリは5行を返します。ただし、 Badge_name は同じ行に 5 つの異なる値を持つことはできません。それは次のように言うのと少し似ています:

 delete from mybadge where uid=5 and badge_name=(5 different values)

試す

delete from mybadge where uid=5 and badge_name in (select concat(tag_name,'-Beginner') from tag,post_tags where post_tags.tag_id=tag.tag_id);
于 2013-03-18T10:49:32.290 に答える
0

select ステートメントが正常に機能している場合は、select によって返されたすべての uid を削除します。

DELETE FROM mybadge WHERE uid IN(
SELECT uid
FROM mybadge 
WHERE uid=5 
AND badge_name=(SELECT concat(tag_name,'-Beginner') 
                FROM tag,post_tags 
                WHERE post_tags.tag_id=tag.tag_id)
);
于 2013-03-18T10:53:32.193 に答える