为何同样一句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 的版本有关系吗?
展开
 我来答
阳光上的桥
2013-07-17 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21423 获赞数:65841
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部
你下面的语句是错误的:
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行,这就是区别,这就是分组的意义。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式