我正在尝试遍历查询,以获取最高的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>
答案 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