2013-03-18 82 views
1

我试图从表中删除数据和我的查询删除数据如下:得到错误#1242,而从表

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); 

我得到5个记录SELECT语句,我想删除所有那5条记录。

回答

2

使用 - '在'关键字,而不是'='签署

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); 
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); 
0

如果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) 
);