如何在ColdFusion 7中对查询对象进行排序?

时间:2009-07-22 16:59:01

标签: sorting coldfusion coldfusion-7

我有一个查询对象,例如,返回了十五行。出于所有意图和目的,我无法修改生成查询对象的SQL,但我需要按列对此查询对象进行排序。有没有办法在不使用外部库的情况下在ColdFusion 7中执行此操作?

编辑:我应该添加:我对此查询对象运行查询,并在此查询查询中执行了ORDER BY子句。还有另一种方法吗?

3 个答案:

答案 0 :(得分:13)

不,查询是您执行此操作的方式。还有其他一些方法可以追踪数据,但它们都是kludgey,并不像QoQ那么简单。

QoQ(也称为内存中查询)的一个强大功能是它可以用于任何返回查询对象的标记返回的查询,例如CFDIRECTORY和CFPOP。

对于想知道如何进行查询查询的人来说,这很简单:

<cfquery name="resortQuery" dbtype="query">
    SELECT *
    FROM myQueryFromSomewhereElse
    WHERE
        COLUMN_NAME=<cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="#myFilterValue#" />
    ORDER BY
        SOME_OTHER_COLUMN_NAME ASC
</cfquery>

答案 1 :(得分:12)

即使这个问题已经解决了,我想补充一点,你也可以使用底层的Java方法sort(),它只需要一行,你不需要为此添加UDF。代码将如下所示:

<cfset qQuery.sort(qQuery.findColumn("nameOfSortColumn"), TRUE)>

需要findColumn()调用来获取sort列的索引,因为sort()正在使用列索引而不是列名。第二个参数指定排序顺序:TRUE =升序,FALSE =降序。

优点:单线呼叫,比QoQ更快

缺点:排序限制为一列

底层Java类还有更多隐藏功能。有关更多信息,请参阅以下链接:

在Lucee(用4.5和5.2进行测试)中,这种方法也类似,甚至更简单:

<cfset qQuery.sort("nameOfSortColumn", "asc")>

希望,这给出了一些想法......

答案 2 :(得分:0)

请检查下一个网址

http://www.coldfusioncookbook.com/entries/How-do-I-resort-a-query.html

<cfquery name="original" datasource="foo" >
  select name, age, rank
  from people
  order by age asc
</cfquery>

<!--- Resort by name --->
<cfquery name="newQuery" dbtype="query">
  select name, age, rank
  from original
  order by name asc
</cfquery>