Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 获取查询列的最大值_Sql_Coldfusion_Qoq - Fatal编程技术网

Sql 获取查询列的最大值

Sql 获取查询列的最大值,sql,coldfusion,qoq,Sql,Coldfusion,Qoq,我试图循环查询,以获得最高的createdTime。 列instanceId是一个GUID字符串,导致此错误: 参考396B3850是instanceId的开始 <cfquery datasource="hostmanager" name="licenses"> SELECT * FROM licenses </cfquery> <cfloop query="licenses"> <cfquery name="getHighestCreate

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

我对ColdFusion不太熟悉,但是您能不能只运行一个查询来获取最大值?比如说

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

出现错误的原因是像licenses.instanceId这样的字符串文字必须用引号括起来,或者更好的方法是用引号括起来

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

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

出现错误的原因是像licenses.instanceId这样的字符串文字必须用引号括起来,或者更好的方法是用引号括起来

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

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


我不懂Coldfusion,但对我来说,这似乎是一个模棱两可的参考问题。如果我错了,请纠正我。。。能否在第二个查询中为licenses表添加别名并正确引用它?我已经试过了,但是没有work@WEI_DBA-FWIW,问题CF代码在普通SQL中转换为这一点,其中instanceId=396B38501诸如此类。显然,这不起作用,因为数据库认为GUID值是表列的名称。两点都不能消除错误。首先,你必须给maxcreatedtime一个别名,否则你将无法使用它做任何事情。其次,按照QofQ的构造方式,您将获得每行的最大createdtime,并且每行只有一个值。那没有多大意义。事实上,它让你不清楚你想要实现什么。不过,让数据库进行聚合和分组更有效。我不懂Coldfusion,但对我来说,这看起来像是一个模棱两可的引用问题。如果我错了,请纠正我。。。能否在第二个查询中为licenses表添加别名并正确引用它?我已经试过了,但是没有work@WEI_DBA-FWIW,问题CF代码在普通SQL中转换为这一点,其中instanceId=396B38501诸如此类。显然,这不起作用,因为数据库认为GUID值是表列的名称。两点都不能消除错误。首先,你必须给maxcreatedtime一个别名,否则你将无法使用它做任何事情。其次,按照QofQ的构造方式,您将获得每行的最大createdtime,并且每行只有一个值。那没有多大意义。事实上,它让你不清楚你想要实现什么。同样,让数据库进行聚合和分组更有效。是的,我可以这样做,但由于我要进行很多if查询,服务器性能会受到很大影响。这就是为什么我选择在ColdFusion中进行比较,而不是通过一个真正的sql查询进行比较。如果您可以在一个查询中完成所有操作,我认为这是您最好的选择,DB应该具有最好的性能—不过,请随意运行更优化的查询。e、 g:是的,我可以这样做,但是由于我想进行很多if查询,服务器性能受到很大影响。这就是为什么我选择在ColdFusion中进行比较,而不是通过一个真正的sql查询进行比较。如果您可以在一个查询中完成所有操作,我认为这是您最好的选择,DB应该具有最好的性能—不过,请随意运行更优化的查询。e、 g:是的,我可以这样做,但是由于我想进行很多if查询,服务器性能受到很大影响。这就是为什么我选择在ColdFusion中比较它并临时存储它。运行单个查询应该比当前代码更有效。记住QoQ不是免费的。如果你遇到性能问题,你的查询可能是低效的,你应该考虑调整它们,因为使用QoQ的方式仅仅是一个创可贴。最好解决真正的问题。。。。如果需要帮助优化查询,应该打开一个新线程并发布SQL。请确保在问题标签中包含您的dbms。是的,我可以这样做,但由于我要进行许多if查询,服务器性能会受到很大影响。这就是为什么我选择在ColdFusion中比较它并临时存储它。运行单个查询应该比当前代码更有效。记住QoQ不是免费的。如果你遇到性能问题,你的查询可能是低效的,你应该考虑调整它们,因为使用QoQ的方式仅仅是一个创可贴。最好解决真正的问题。。。。如果需要帮助优化查询,应该打开一个新线程并发布SQL。确保在问题标签中包含dbms。