sql查询将最后一条记录带入组中

时间:2014-10-09 18:31:16

标签: mysql sql crystal-reports

我试图将最后一条记录带入一个小组。 这是我尝试使用的查询,但它带来了该组中的第一条记录。

 SELECT 
"hba"."ID",
"hba"."session_number", 
"hba"."u_c", 
"hba"."u-v", 
"hba"."date"
 FROM "hba"
GROUP BY "hba"."ID","hba"."session_number"

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

我猜这里。看起来您的ID字段是自动增量的。看起来您希望查询只为session_number的每个不同值显示一行,并且该行应该是最近插入的一行(放置它的“最后一行”)。

让我们首先检索每个组的最新行的ID。

SELECT MAX(ID) AS ID, session_number
  FROM hba
 GROUP BY session_number

然后,让我们将其用作子查询并将其加入表中。

SELECT a.ID, a.session_number, u_c, u_v, date
  FROM hba AS a
  JOIN (
        SELECT MAX(ID) AS ID, session_number
          FROM hba
         GROUP BY session_number
       ) AS b ON a.ID = b.ID 
 ORDER BY a.session_number 

看看这是怎么回事?首先,您定义“最后一行”的含义,并构建子查询以实现该定义。然后使用该子查询从主表中获取所需的数据。然后以可用的方式订购最终结果集。

出于某种原因,您没有在问题中披露您在Crystal Reports中工作。您可能会发现使用MySQL客户端从数据库中创建包含所需信息的视图会很有帮助,然后使用Crystal从该视图中呈现结果集。

答案 1 :(得分:0)

 SELECT "hba"."ID", "hba"."session_number", "hba"."u_c", "hba"."u-v", "hba"."date"
  FROM "hba" 
GROUP BY "hba"."ID","hba"."session_number" ORDER BY "hba"."ID" desc,"hba"."session_number" desc 

就是你需要做的一切。