您好 我正在使用以下查询 -
select * from table_name order by status desc
它显示所有记录的所需结果,但当我使用以下查询时显示为n -
select * from table_name group by category order by status desc
它显示了只有2个记录的不同类别和排序顺序。
是因为我正在和小组一起使用订单.....
答案 0 :(得分:1)
这是因为你正在使用group by
。 Order 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)隐式添加到组中。因此,您实际上是按类别和状态进行分组。