1

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

2 回答 2

7

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

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

SELECT  InstanceID, startDate, MAX(CreatedTime) AS MaxCreatedTime
FROM    licenses 
GROUP BY InstanceID, startDate
于 2019-08-08T13:40:53.380 回答
1

我对 ColdFusion 不太熟悉,但你能不能只查询最大值?例如

SELECT TOP 1 CREATEDTIME 
FROM   licenses 
WHERE  {any conditions you want} 
ORDER BY CREATEDTIME DESC
于 2019-08-08T13:36:38.040 回答