我试图从表中删除数据和我的查询删除数据如下:得到错误#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条记录。
我试图从表中删除数据和我的查询删除数据如下:得到错误#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条记录。
使用 - '在'关键字,而不是'='签署
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);
你的子查询,如你所说,返回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);
如果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)
);