Coldfusion Queryappend的任何自定义函数

Coldfusion Queryappend的任何自定义函数,coldfusion,coldfusion-2016,Coldfusion,Coldfusion 2016,Queryappend在Coldfusion-18中,而不是在Coldfusion-16中 有人能为Queryappend推荐任何定制的coldfusoin函数吗 假设我有两个查询: Query-1 select * from user where userid > 10 order by userid asc Query-2 select * from user where userid < 10 order by userid desc Query append should

Queryappend在Coldfusion-18中,而不是在Coldfusion-16中

有人能为Queryappend推荐任何定制的coldfusoin函数吗

假设我有两个查询:

Query-1
select * from user where userid > 10 order by userid asc

Query-2
select * from user where userid < 10 order by userid desc

Query append should return folowing:

userid username 
11  AA
12  BB
13  CC
9   MM
8   NN
7   OO

提前感谢

这里有一种方法可以做到这一点

<cfscript>
IDList1 = '1,2,3';
IDList2 = '6,5,4';
NameList1 = 'Fred,Wilma,Pebbles';
NameList2 = 'Barney,Betty,Bam,Bam';
Flinstones = QueryNew("UserID,UserName", 'integer,varchar');
Rubbles = QueryNew("UserID,UserName", 'integer,varchar');

for (i = 1; i <=3; i++) {
QueryAddRow(Flinstones);
QuerySetCell(Flinstones, 'UserID', i);

QuerySetCell(Flinstones, 'UserName'
    , ListGetAt(NameList1, i));

QueryAddRow(Rubbles);
QuerySetCell(Rubbles, 'UserID'
    , ListGetAt(IDList2, i));

QuerySetCell(Rubbles, 'UserName'
    , ListGetAt(NameList2, i));
    
}
</cfscript>

<cfquery name="All" dbtype="query">
    select UserID, UserName
    from Flinstones
    order by UserID
</cfquery>

<cfloop query = "Rubbles">
    <cfset QueryAddRow(All)>
    <cfset QuerySetCell(All, 'UserId', UserId,
        All.recordcount)>
        <cfset QuerySetCell(All, 'UserName', UserName,
        All.recordcount)>
    
    
</cfloop>

<cfdump var="#all#">
你可以玩玩它


将此逻辑放入一个接受两个查询并返回第三个查询的函数中并不难。

这里有一种方法可以实现这一点

<cfscript>
IDList1 = '1,2,3';
IDList2 = '6,5,4';
NameList1 = 'Fred,Wilma,Pebbles';
NameList2 = 'Barney,Betty,Bam,Bam';
Flinstones = QueryNew("UserID,UserName", 'integer,varchar');
Rubbles = QueryNew("UserID,UserName", 'integer,varchar');

for (i = 1; i <=3; i++) {
QueryAddRow(Flinstones);
QuerySetCell(Flinstones, 'UserID', i);

QuerySetCell(Flinstones, 'UserName'
    , ListGetAt(NameList1, i));

QueryAddRow(Rubbles);
QuerySetCell(Rubbles, 'UserID'
    , ListGetAt(IDList2, i));

QuerySetCell(Rubbles, 'UserName'
    , ListGetAt(NameList2, i));
    
}
</cfscript>

<cfquery name="All" dbtype="query">
    select UserID, UserName
    from Flinstones
    order by UserID
</cfquery>

<cfloop query = "Rubbles">
    <cfset QueryAddRow(All)>
    <cfset QuerySetCell(All, 'UserId', UserId,
        All.recordcount)>
        <cfset QuerySetCell(All, 'UserName', UserName,
        All.recordcount)>
    
    
</cfloop>

<cfdump var="#all#">
你可以玩玩它


将此逻辑放入一个接受两个查询并返回第三个查询的函数中并不难。

模拟ColdFusion早期版本中出现的查询的最简单、可读性最强的解决方案是使用查询qoq,然后使用union all功能通过不提供ORDER by来追加结果qoq条款


这里是gist的一个工作示例

模拟ColdFusion早期版本中出现的查询的最简单、可读性最强的解决方案是使用查询qoq,然后使用union all功能通过不提供ORDER by子句来追加结果qoq


这是gist的一个工作示例

Ben Nadel早在2006年就已经为您完成了这项工作。可能更有效的方法是直接从数据库的初始查询中使用UNION。@Miguel-F,您注意到两个order by子句不同了吗?当我第一次回答这个问题时我也没有。不,直到你指出,我才注意到这一点。也许是打字错误?组合结果的例子都是递增的。Ben Nadel早在2006年就已经为您完成了这项工作。可能更有效的方法是直接从数据库的初始查询中使用UNION。@Miguel-F,您注意到两个order by子句不同了吗?当我第一次回答这个问题时我也没有。不,直到你指出,我才注意到这一点。也许是打字错误?组合结果示例都是升序的。它认为查询的查询方法更干净。确实如此,但它没有提供正确的解决方案。问题中的两个查询具有不同的order by子句。它认为查询中的查询方法更干净。确实如此,但没有提供正确的解决方案。质询中的两项质询按条文的先后次序不同。