0

示例:

SELECT 
   Equip.name, equip.type, region.regionname, region.equipfk 
FROM 
   Equip 
INNER JOIN 
   region on Equip.equippk = region.equipfk   
GROUP BY 
   Equip.Name, region.equipfk                  

预期输出:

name    type       regionname    equipfk 
----------------------------------------
TCT     Steel      detroit       8235
TCT     steel      detroit       8235
GTH     COPPER     michigan      8569
GCT     COPPER     michigan      8569

我有一个包含 10 列的表。我想使用 group by 子句按一些 id 对每一行进行分组。我不想在选择查询中使用任何聚合函数。是否有任何替代方法可以使用 group by 子句并避免选择查询中的聚合函数..

提前致谢。

4

1 回答 1

0

听起来您正在GROUP BY尝试对行进行排序(它只是通过无法保证的巧合副作用来实现)。如果是这种情况,您需要ORDER BY

SELECT 
   Equip.name, equip.type, region.regionname, region.equipfk 
FROM 
   Equip 
INNER JOIN 
   region on Equip.equippk = region.equipfk   
ORDER BY 
   Equip.Name, region.equipfk   

两者GROUP BYDISTINCT 可能会产生看似已排序的输出 - 但这只是它们实施方式的副作用,许多事情(服务器上的负载、服务器配置、热修复、服务包、主要升级)可能会改变返回行的顺序 -除非您还有一个ORDER BY子句。

于 2013-07-23T09:28:14.373 回答