获取查询列的最大值
Get max value of an query column
我正在尝试循环查询,以获得最高的 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>
我对 ColdFusion 不太熟悉,但是你能不能不 运行 查询最大值?例如
SELECT TOP 1 CREATEDTIME
FROM licenses
WHERE {any conditions you want}
ORDER BY CREATEDTIME DESC
错误的原因是像 #licenses.instanceId#
这样的字符串文字必须用引号括起来 - 或者更好 - 包裹在 cfqueryparam.
中
但是,在循环内查询非常效率低下,而且也不需要。只需使用数据库的聚合函数:
SELECT InstanceID, startDate, MAX(CreatedTime) AS MaxCreatedTime
FROM licenses
GROUP BY InstanceID, startDate
我正在尝试循环查询,以获得最高的 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>
我对 ColdFusion 不太熟悉,但是你能不能不 运行 查询最大值?例如
SELECT TOP 1 CREATEDTIME
FROM licenses
WHERE {any conditions you want}
ORDER BY CREATEDTIME DESC
错误的原因是像 #licenses.instanceId#
这样的字符串文字必须用引号括起来 - 或者更好 - 包裹在 cfqueryparam.
但是,在循环内查询非常效率低下,而且也不需要。只需使用数据库的聚合函数:
SELECT InstanceID, startDate, MAX(CreatedTime) AS MaxCreatedTime
FROM licenses
GROUP BY InstanceID, startDate