获取查询列的最大值

时间:2019-08-08 13:29:29

标签: sql coldfusion qoq

我正在尝试遍历查询,以获取最高的createdTime。 列instanceId是一个GUID(字符串),这给了我这个错误: enter image description here

引用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>

2 个答案:

答案 0 :(得分:7)

发生错误的原因是,像#licenses.instanceId#这样的字符串文字必须用引号括起来,或者更好的是用cfqueryparam括起来。

但是,循环内的查询极其效率低下,而且还是不需要的。只需使用数据库的聚合函数:

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

答案 1 :(得分:1)

我对ColdFusion不太熟悉,但是您可以不只是查询最大值吗?例如

SELECT TOP 1 CREATEDTIME 
FROM   licenses 
WHERE  {any conditions you want} 
ORDER BY CREATEDTIME DESC
相关问题