2013-07-23 37 views
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子句并避免选择查询中的聚合函数。

在此先感谢。

+0

你在搜索'DISTINCT'吗?如果不是这样,假设有一些列需要“GROUP BY”和SELECT的一些*其他*列,那么这些*其他列的值是如何确定的? –

+0

总之,不,你不能。现在看来你实际上是在寻找'ORDER BY'而不是'GROUP BY'。 – peterm

+0

您需要发布一些带有预期结果的样本数据以帮助您 – Madhivanan

回答

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 BY,并出现进行排序DISTINCT农产品输出 - 但这是他们是如何已经实施的只有一个副作用,许多事情(服务器上的负载,服务器配置,热修补程序,服务包,主要升级)可能会更改行返回的顺序 - 除非也有ORDER BY子句。

相关问题