如何将查询查询用作子查询(Coldfusion)

如何将查询查询用作子查询(Coldfusion),coldfusion,coldfusion-11,qoq,Coldfusion,Coldfusion 11,Qoq,我想将查询查询用作子查询,但出现语法错误:遇到。这是我的查询qHistoryData是我的查询对象: <cfquery dbtype="query"> SELECT * FROM ( SELECT t2.*, ROW_NUMBER() OVER( PARTITION BY collectid ORDER BY update_on DESC

我想将查询查询用作子查询,但出现语法错误:遇到。这是我的查询qHistoryData是我的查询对象:

<cfquery dbtype="query">
    SELECT *
    FROM (
        SELECT 
            t2.*,
            ROW_NUMBER() OVER(
                PARTITION BY collectid
                ORDER BY update_on DESC
            ) AS seqnum
        FROM qHistoryData t2
    ) t
    WHERE t.seqnum = 1;
</cfquery>

查询查询完全在Java的ColdFusion应用层实现,不涉及数据库,因此不能使用数据库中的许多可用功能

在qHistoryData查询中添加一列,该列通过按collectid顺序计算分区上的行数,并将DESC上的行数更新为seqnum,然后在查询中执行以下操作:

<cfquery dbtype = "query">
SELECT *
FROM   qHistoryData
WHERE  seqnum = 1;
</cfquery>

您的另一个选择是手动处理查询对象。

这是实际查询的简化版本吗?这在我看来非常有效。@VBokšić我使用Oracle,我的错误是:查询语法错误。遇到。我没有更多的错误。正如@Andrew所说的,看起来还可以。下面是演示:查询的查询不支持行数和行数以上。正如其他人已经提到的,ColdFusion查询的SQL能力有限。它不是一个完整的实现。鉴于OP已经拥有的数据,这是获得所需结果的好方法。然而,我仍然认为这可能是可以从原始查询返回的数据,而不必产生QoQ的开销。