按分组排序分组项目

时间:2013-03-04 22:18:13

标签: mysql sql

以下代码用于Sql Server 但我无法让它正常工作;状态不会按顺序排列并首先显示最新状态 我该如何解决?

<%
    SQL = "SELECT S.MEMBERID, S.StatusMessage, S.StatusPlace, S.StatusCity, S.StatusDateEntered"
    SQL = SQL & " FROM STATUSES S"
    SQL = SQL & " GROUP BY S.MEMBERID"
    SQL = SQL & " ORDER BY S.StatusDateEntered DESC"
    Set objStatuses = objConn.Execute(SQL)
%>

2 个答案:

答案 0 :(得分:3)

您的代码无效,因为您在GROUP上正在进行MEMBERID,但您没有聚合任何未分组的列...这只会为您提供一个随机值每个MEMBERID的每个其他列...不一定是最新的。接下来,您将通过这些加扰数据进行排序,这不是您所期望的。

要解决此问题,您需要执行 groupwise-max ,这可以有效地实现为JOIN到包含每个MAX(StatusDateEntered)的子查询{ {1}}:

MEMBERID

答案 1 :(得分:0)

迈克尔非常感谢你的帮助。 我刚刚发现了LIMIT条款。 它也做了伎俩。

    SQL = "SELECT S.MEMBERID, S.StatusMessage, S.StatusPlace, S.StatusCity, S.StatusDateEntered"
    SQL = SQL & " FROM STATUSES S"
'   SQL = SQL & " GROUP BY S.MEMBERID"
    SQL = SQL & " ORDER BY S.StatusDateEntered DESC LIMIT 1"
    Set objStatuses = objConn.Execute(SQL)