不能在sql中混合order by和group by

时间:2012-10-04 10:20:00

标签: sql-server visual-studio-2010 sql-server-2008 ms-access-2007

我遇到了sql的问题。我不知道为什么访问和SQL服务器继续向我显示错误。 我使用phpmyadmin,但没有问题。

我有一张桌子。我的表名是t_data

ID  MasterCode  DetailCode  Description  Item  Status
1       1           1.1      Resources   Meat     1
2       1           1.1      Resources   Meat     1
3       1           1.1      Resources   Meat     1
4       1           1.1      Resources   Meat     1
5       3           3.1       Utility    oil      1
6       2           2.1      Transport   BBM      1

我想查询该表并希望结果如下:

MasterCode  Description
    1       Resources
    2       Utility
    3       Transport

这是我的sql语法

"select MasterCode, Description from t_data group by Description order by MasterCode"

通常我只是使用sql语法,我可以得到我想要的。但现在我做不到。

  

您尝试执行的查询不包含指定表达式作为聚合函数。

如果我正在使用access和sql server,那我就得到了这个错误。如果我在XAMPP中使用phpmyadmin,它运行正常。但我不想使用phpmyadmin。我想使用access或sql server。

我已经在google上搜索了这个错误。我把我的sql改成了这个。

"select count(*), Description from t_data group by Description "

"select a.categoryMaster, b.categoryDesc from t_category a inner join t_category b on a.categoryDetail = b.categoryDetail"

没有解决我的问题,因为我也想获得MasterCode。

任何解决方案?谢谢。

3 个答案:

答案 0 :(得分:4)

您可以使用DISTINCT

select distinct MasterCode, Description 
from t_data
order by MasterCode;

请参阅SQL Fiddle with Demo

或者您可以使用像MAX()这样的聚合函数:

select max(MasterCode) MasterCode, Description 
from t_data
group by Description
order by MasterCode;

请参阅SQL Fiddle with Demo

答案 1 :(得分:1)

试试这个

SELECT MasterCode, Description 
FROM t_data 
GROUP BY Description, MasterCode 
ORDER BY MasterCode

答案 2 :(得分:1)

select min(MasterCode) MasterCode, Description 
from t_data 
group by Description 
order by MasterCode

OR

select MasterCode, Description 
from t_data 
group by MasterCode,Description 
order by MasterCode