首页 > 解决方案 > 获取查询列的最大值

问题描述

我正在尝试循环查询,以获得最高的 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>

标签: sqlcoldfusionqoq

解决方案


错误的原因是字符串文字 like#licenses.instanceId#必须用引号引起来 - 或者更好的是 - 包装在cfqueryparam中。

但是,在循环内查询效率极低,而且无论如何都不需要。只需使用数据库的聚合函数:

SELECT  InstanceID, startDate, MAX(CreatedTime) AS MaxCreatedTime
FROM    licenses 
GROUP BY InstanceID, startDate

推荐阅读