我试图将最后一条记录带到组中。 这是我尝试使用的查询,但它将带来组中的第一条记录。sql查询带来组中的最后一条记录
SELECT
"hba"."ID",
"hba"."session_number",
"hba"."u_c",
"hba"."u-v",
"hba"."date"
FROM "hba"
GROUP BY "hba"."ID","hba"."session_number"
任何帮助,非常感谢。
我试图将最后一条记录带到组中。 这是我尝试使用的查询,但它将带来组中的第一条记录。sql查询带来组中的最后一条记录
SELECT
"hba"."ID",
"hba"."session_number",
"hba"."u_c",
"hba"."u-v",
"hba"."date"
FROM "hba"
GROUP BY "hba"."ID","hba"."session_number"
任何帮助,非常感谢。
我在这里猜测。它看起来像你的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从该视图渲染结果集。
MAX()属性不起作用,因为Crystal报告给我一个错误,试图在命令中输入此查询 – Dagz200 2014-10-09 19:26:01
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
是你所需要做的。 “
”什么是“”所有“”“双”“引号”?此外,将解释“last”意味着什么是有用的...... – 2014-10-09 18:33:12
某些工具以这种方式生成SQL。例如,Cognos就是这样做的。让我的头受伤阅读它。 – Andrew 2014-10-09 18:34:16
我删除了SQL Server标记,因为此查询在SQL Server中(以及除MySQL以外的几乎任何数据库引擎中)都会失败 – Lamak 2014-10-09 18:34:21