sql语句执行时报错,求高手解答。
mysql执行修改语句的时候,要求同一个IP在数据库里面的记录只保留3条,多出来的则将状态改为1(也就是删除状态)UPDATEtb_weibo_votes,(SELECT...
mysql 执行修改语句的时候,要求同一个IP在数据库里面的记录只保留3条,多出来的则将状态改为1(也就是删除状态)
UPDATE tb_weibo_vote s , ( SELECT id,weiboid,ip,(COUNT(ip)-3) AS s_ip FROM tb_weibo_vote GROUP BY ip,weiboid HAVING s_ip>0
) v SET s.del=1 WHERE s.IP=v.ip limit s_ip
但报错了,求高手解答。谢谢! 展开
UPDATE tb_weibo_vote s , ( SELECT id,weiboid,ip,(COUNT(ip)-3) AS s_ip FROM tb_weibo_vote GROUP BY ip,weiboid HAVING s_ip>0
) v SET s.del=1 WHERE s.IP=v.ip limit s_ip
但报错了,求高手解答。谢谢! 展开
1个回答
展开全部
SELECT id,weiboid,ip,(COUNT(ip)-3) AS s_ip FROM tb_weibo_vote GROUP BY ip,weiboid HAVING s_ip>0
没有使用聚合函数的字段全都要放在GROUP by后面 id字段也要放在后面
SELECT id,weiboid,ip,(COUNT(ip)-3) AS s_ip FROM tb_weibo_vote GROUP BY ip,weiboid ,id HAVING s_ip>0
没有使用聚合函数的字段全都要放在GROUP by后面 id字段也要放在后面
SELECT id,weiboid,ip,(COUNT(ip)-3) AS s_ip FROM tb_weibo_vote GROUP BY ip,weiboid ,id HAVING s_ip>0
更多追问追答
追问
兄弟,你这样不对吧,Group by是分组的意思吧,Group by ip,weiboid 表示的是 根据ip和weiboid来进行分组,一个微博可能对应着几个IP,当然同一个ip可能对应着几个weiboid 所以必须以ip,和weiboid同时分组才能得出结果,你现在group by后面又加了一个id进来,要知道id是唯一的,你又让他根据id来分组,那我前面的count(ip)不就没有意义了么,这样肯定出不来结果。
追答
朋友,GROUP BY 的使用规则必须是 前面没有使用聚合函数的字段必须全放在GROUP BY 后面 ,要么你不要这个ID字段,要么得把ID字段放后面
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询