获取查询列的最大值

dew*_*wey 1 sql coldfusion qoq

我试图遍历一个查询,以获取最高的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>
Run Code Online (Sandbox Code Playgroud)

Age*_*eax 7

错误的原因是,像这样的字符串文字#licenses.instanceId#必须用引号引起来,或者最好用cfqueryparam进行包装。

然而,在一个循环中查询是非常低效的,而且它不总需要。只需使用数据库的聚合函数:

SELECT  InstanceID, startDate, MAX(CreatedTime) AS MaxCreatedTime
FROM    licenses 
GROUP BY InstanceID, startDate
Run Code Online (Sandbox Code Playgroud)

  • 运行单个查询应该比当前代码更有效率。请记住,QoQ不是免费的。如果遇到性能问题,您的查询可能效率不高,应考虑对其进行调整,因为使用QoQ只是一种创可贴。更好地解决实际问题。 (3认同)