
为何同样一句mysql语句,在不同地方执行结果不一样
selectgoods_id,goods_name,max(shop_price)fromgoods;语法本身没有错误(逻辑上是错误的)。在教程里执行没有错误,得到了sh...
select goods_id,goods_name,max(shop_price) from goods; 语法本身没有错误(逻辑上是错误的)。在教程里执行没有错误,
得到了shop_price 的最大值,只是 goods_id,goods_name并不和shop_price匹配
在我的机子上执行却是
ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GR
OUP columns is illegal if there is no GROUP BY clause。
和mysql 的版本有关系吗? 展开
得到了shop_price 的最大值,只是 goods_id,goods_name并不和shop_price匹配
在我的机子上执行却是
ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GR
OUP columns is illegal if there is no GROUP BY clause。
和mysql 的版本有关系吗? 展开
1个回答
展开全部
你下面的语句是错误的:
select goods_id,goods_name,max(shop_price) from goods;
应该修改为:
select goods_id,goods_name,max(shop_price) from goods
GROUP BY goods_id,goods_name;
select goods_id,goods_name,max(shop_price) from goods;
应该修改为:
select goods_id,goods_name,max(shop_price) from goods
GROUP BY goods_id,goods_name;
更多追问追答
追问
这个是错误的我知道,我的意思是:就是这样一个错误的sql语句,为何在别人那里正常运行(当然结果是错误的),而在我这里直接报错了。两者的不同是因为mysql的版本不同导致的吗?
如果修改成你写的语句,那么和 select goods_id,goods_name,shop_price from goods;的结果有和区别呢? 同样不能达到分组求最大的效果 也是没意义
追答
你下面的语句在各种版本的MYSQL下都不可能运行,都会直接报错(不排除其它数据库能执行):
select goods_id,goods_name,max(shop_price) from goods;
我的语句在各种数据库下都能正确执行,不报错,结果也是对的:
select goods_id,goods_name,max(shop_price) from goods
GROUP BY goods_id,goods_name;
含义是goods_id、goods_name相同的数据库的最大shop_price,假设你的数据是:
goods_id、goods_name、shop_price
1 xxx 1
1 xxx 2
2 yyy 3
2 yyy 4
那么执行结果是:
goods_id、goods_name、max(shop_price)
1 xxx 2
2 yyy 4
也就是说返回结果只有两行,你追问的那个语句返回结果是4行,这就是区别,这就是分组的意义。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询