达梦数据库的group by 语句出错
SELECT  shop.ID AS 主键,shop.UID AS 用户ID,test.NAME AS 姓名  FROM sysdba.T shop 
LEFT JOIN sysdba.TEST test ON shop.ID = test.ID
WHERE shop.ID > 0
GROUP BY test.NAME;

加上group by 就报错 :无效的SELECT项

1个回答

SELECT max(shop.ID) AS 主键,max(shop.UID) AS 用户ID,test.NAME AS 姓名 FROM sysdba.T shop
LEFT JOIN sysdba.TEST test ON shop.ID = test.ID
WHERE shop.ID > 0
GROUP BY test.NAME;
或者
SELECT shop.ID AS 主键,shop.UID AS 用户ID,test.NAME AS 姓名 FROM sysdba.T shop
LEFT JOIN sysdba.TEST test ON shop.ID = test.ID
WHERE shop.ID > 0
GROUP BY test.NAME,shop.ID,shop.UID

weixin_39606236
꧁gaoKuo꧂ 回复Gary-: 你可以这么想,如果你根据name分组,如果有两个相同的name,他们的shop.Id不同,数据库给你返回哪个呢?他不知道怎么返回给你,所以你要么告诉他要最大的(聚合函数),要么告诉他如果shop.ID不同也给我区分开(下面那种解决方式)
一年多之前 回复
weixin_39606236
꧁gaoKuo꧂ 回复Gary-: 你可以这么想,如果你根据name分组,如果有两个name,他们的shop.Id不同,数据库给你返回哪个呢?他不知道怎么返回给你,所以你要么告诉他要最大的(聚合函数),要么告诉他如果shop.ID不同也给我区分开(下面那种解决方式)
一年多之前 回复
weixin_39606236
꧁gaoKuo꧂ 回复Gary-: 不是啊,我猜测你用的数据库需要把查询字段都分组或者使用聚合函数.
一年多之前 回复
rochenhack
Jia_Li_z 也就是说如果我要进行分组的话就必须要把分组的列名写在第一位,然后后面是一次列名?
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问