我们可以使用order by子句与group by

时间:2011-05-17 06:43:25

标签: sql

您好    我正在使用以下查询 -

select * from table_name order by status desc

它显示所有记录的所需结果,但当我使用以下查询时显示为n -

select * from table_name group by category order by status desc

它显示了只有2个记录的不同类别和排序顺序。

是因为我正在和小组一起使用订单.....

4 个答案:

答案 0 :(得分:1)

这是因为你正在使用group byOrder by不会更改结果集本身,但会更改行的顺序。

答案 1 :(得分:0)

通常,您会希望将COUNT()和SUM()等聚合函数与GROUP BY子句一起使用。

例如,计算名为Bob的记录数。

SELECT First_Name, COUNT(First_Name) FROM Users GROUP BY First_Name ORDER BY First_Name ASC;

答案 2 :(得分:0)

是。 “分组依据”将汇总数据并按指定的字段对其进行分组。

当你使用group by时,你需要包含一些聚合函数,否则它将不起作用,例如。

SELECT Category, COUNT(*) AS Total
FROM [table]
GROUP BY Category

此外,ORDER BY仅应用于查询的结果集。

编辑:从您的评论中听起来您实际上是在试图“直观地分组”结果集中的记录。如果情况确实如此,那么使用GROUP BY而只是去:

SELECT *
FROM [table]
ORDER BY Category, Status

这就是你需要的吗?

答案 3 :(得分:0)

这很令人困惑,因为通常您只能选择字段并按照您的组中的字段排序。

MySQL以不同的方式执行此操作,并允许您在某些情况下按不在组中的字段进行排序。这些字段(在本例中为status)隐式添加到组中。因此,您实际上是按类别状态进行分组。