代码之家  ›  专栏  ›  技术社区  ›  Hooray Im Helping codaddict

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

  •  3
  • Hooray Im Helping codaddict  · 技术社区  · 15 年前

    我有一个查询对象,返回了15行。出于所有的意图和目的,我不能修改生成查询对象的SQL,但我需要按列对该查询对象进行排序。在ColdFusion 7中,有没有一种方法可以做到这一点而无需借助外部库?

    编辑:我应该添加:我已经对此查询对象运行了一个查询,并完成了一个 ORDER BY 查询的此查询中的子句。还有别的办法吗?

    3 回复  |  直到 7 年前
        1
  •  13
  •   rrk Manish Jangir    9 年前

    不,查询就是这样做的。还有其他一些方法可以让你胡思乱想,但这些方法都很蹩脚,不会像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>
    
        2
  •  12
  •   Sebastian Zartner Emmanouil Chountasis    7 年前

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

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

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

    优点:一线通话,比QoQ快

    缺点:排序仅限于一列

    下面的Java类有很多隐藏的特性。有关详细信息,请参阅以下链接:

    在Lucee(用4.5和5.2测试)中,这也起到了类似的作用,甚至更简单:

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

    希望,这给了我们一些想法…

        3
  •  0
  •   Peter Boughton    11 年前

    请检查下一个网址

    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>