sql - 获取查询列的最大值
问题描述
我正在尝试循环查询,以获得最高的 createdTime。列 instanceId 是一个 GUID(字符串),这给了我这个错误:
引用 396B3850 是 instanceId 的开头
<cfquery datasource="hostmanager" name="licenses">
SELECT *
FROM licenses
</cfquery>
<cfloop query="licenses">
<cfquery name="getHighestCreatedTime" dbtype="query">
SELECT MAX(CREATEDTIME)
FROM licenses
WHERE instanceId = #licenses.instanceId#
AND startDate = #licenses.startDate#
</cfquery>
</cfloop>
解决方案
错误的原因是字符串文字 like#licenses.instanceId#
必须用引号引起来 - 或者更好的是 - 包装在cfqueryparam中。
但是,在循环内查询效率极低,而且无论如何都不需要。只需使用数据库的聚合函数:
SELECT InstanceID, startDate, MAX(CreatedTime) AS MaxCreatedTime
FROM licenses
GROUP BY InstanceID, startDate
推荐阅读
- swift - Swift AVQueuePlayer 完成播放视频
- node.js - 禁用或删除 npm 包中的某些功能
- shake-build-system - 如何在 Shake 中获取控制台输入?
- python - 气流:无法使用 Bigquery 挂钩创建视图
- sql-server - SSRS 2008 查询:来自所选参数的表名
- go - 是否可以使用 Bazel 构建 Go 库而不是二进制文件?
- javascript - 裁剪图像时出错
- asp.net - 从 Ajax 响应中的 WebSerice 返回 json 对象
- python - 获取表示 Python 中特定时间最近出现的日期时间对象
- presto - Superset 选择 Trino 表的时间戳类型为 UNKNOWN