sql中delete嵌套的问题

有个表,例如下表(打比方,实际表很复杂)authoridmessage1。。。1。。。1。。。1。。。2。。。2。。。message字段内容省略,我想删除发表messag... 有个表,例如下表(打比方,实际表很复杂)
authorid message
1 。。。
1 。。。
1 。。。
1 。。。
2 。。。
2 。。。
message字段内容省略,我想删除发表message个数小于3的,在该表中是要删除authorid为2的,一下为实际表中的语句
delete from posts_99 where authorid in (select authorid from posts_99 group by authorid having count(message)<3)
这个语句怎么会有问题呢,怎么改都不行。高手有啥好的方法吗?
mysql中报错信息为:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'betwwen (select authorid from posts_99 group by authorid having count(message)<1' at line 1
这个语句delete from posts_99 where count(message)<10;也不行啊,烦啊
他说You can't specify target table 'posts_99' for update in FROM clause
展开
 我来答
百度网友a800768
推荐于2017-11-23 · TA获得超过1841个赞
知道大有可为答主
回答量:1928
采纳率:0%
帮助的人:1713万
展开全部
delete from posts_99 where authorid in (select authorid from posts_99 group by authorid having count(message)<3)
中select authorid from posts_99 group by authorid having count(message)<3
查询条件中没有count(message),所以having条件不成立。
select authorid,count(message) from posts_99 group by authorid having count(message)<3 这样的查询才成立,但在delete语句中不适用。
用两步来解决
1。将查询结果放到一个临时表中
select authorid,count(message) SL into #a from posts_99 group by authorid having count(message)<3
2.关联临时表做delete

delete from posts_99 where authorid in (select authorid from #a)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
firev000
2010-07-15 · TA获得超过492个赞
知道小有建树答主
回答量:877
采纳率:0%
帮助的人:640万
展开全部
delete from posts_99 where authorid in (select authorid from posts_99 group by authorid having count(authorid)<3)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
常州杰哥讲故事
2010-07-15 · ❤️杰哥讲故事,带你领略奇幻世界...
常州杰哥讲故事
采纳数:30 获赞数:46

向TA提问 私信TA
展开全部
直接用count(*)
delete from posts_99 where authorid in (select authorid from posts_99 group by authorid having count(*)<3)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式