2013-03-18 31 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) 
);