Mysql 用于数据库查询的Coldfusion数组

Mysql 用于数据库查询的Coldfusion数组,mysql,coldfusion,Mysql,Coldfusion,我试图用下面的cfml(sql)语句查询数据库,但我希望能够从数组中获取每个stat_实例的结果,最后一行包含循环,我认为应该根据数组中的每个值生成一个查询 select <cfif monthCrossover> statsMinEnd2 + </cfif> stats_min as time_stamp, <cfif structKeyExists(avgThis, arguments.key)>

我试图用下面的cfml(sql)语句查询数据库,但我希望能够从数组中获取每个stat_实例的结果,最后一行包含循环,我认为应该根据数组中的每个值生成一个查询

select 
    <cfif monthCrossover>
        statsMinEnd2 + 
    </cfif> 
    stats_min as time_stamp, 
    <cfif structKeyExists(avgThis, arguments.key)>
        avg
    <cfelse>
        sum
    </cfif>
    (stats_value) as stats_value 
from stats_kv_table_201207 
where 
    <cfif dayStart == dayEnd>
        stats_day = <cfqueryparam value="#dayStart#">
    <cfelse> 
        stats_day >= <cfqueryparam value="#dayStart#"> 
        and stats_day <= <cfqueryparam value="#dayEnd#">
    </cfif>
    and stats_min >= <cfqueryparam value="#statsMinStart1#"> and stats_min <= <cfqueryparam value="#statsMinEnd1#">
    and stats_component = <cfqueryparam value="#arguments.component#">
    <cfset instanceList = ListToArray(arguments.instance)>
    <cfif ArrayLen(instanceList) EQ 1>
        and stats_instance = <cfqueryparam value="#arguments.instance#">
    </cfif>
    <cfif ArrayLen(instanceList) GT 1>
        and stats_instance IN (<cfqueryparam value="#arguments.instance#" list="yes"/>)
    </cfif>
    <cfif ArrayLen(instanceList) GT 1 and ArrayContains(instanceList, "multi")>
        <cfloop index = "i" from="1" to="#arrayLen(instanceList)#"  array =#instanceList#> 
            <cfset stats_instance = <cfqueryparam value= #instanceList[i]#>
        </cfloop>
    </cfif>
选择
statsMinEnd2+
作为时间戳的统计数据\u min,
平均值
总和
(统计值)作为统计值
来自统计数据表201207
哪里
统计日=
统计数据日>=

这样做有什么不对吗

<cfset myArr = ArrayNew(1) />
<cfloop array="myOtherArr" index="index">
    <cfquery name="myQuery" datasource="myDataSource">...</cfquery>
    <cfset ArrayAppend(myArr, myQuery.value) />
</cfloop>

...

这样做有什么不对吗

<cfset myArr = ArrayNew(1) />
<cfloop array="myOtherArr" index="index">
    <cfquery name="myQuery" datasource="myDataSource">...</cfquery>
    <cfset ArrayAppend(myArr, myQuery.value) />
</cfloop>

...

如果我正确理解了您的问题,您可能需要在查询中使用GROUP BY子句按统计实例对sum/avg值进行分组。大概是这样的:

SELECT stats_instance, ...
FROM ...
WHERE
... 
<cfif len(trim(arguments.instance))>
AND stats_instance IN (<cfqueryparam value="#arguments.instance#" list="yes"/>)
</cfif>
GROUP BY stats_instance
ORDER BY stats_instance
选择stats\u实例。。。
从…起
哪里
... 
和()
按stats\u实例分组
按stats\u实例排序

注意:根据您的数据库引擎,语法可能会有所不同。

如果我正确理解了您的问题,您可能需要在查询中使用GROUP BY子句按统计实例对sum/avg值进行分组。大概是这样的:

SELECT stats_instance, ...
FROM ...
WHERE
... 
<cfif len(trim(arguments.instance))>
AND stats_instance IN (<cfqueryparam value="#arguments.instance#" list="yes"/>)
</cfif>
GROUP BY stats_instance
ORDER BY stats_instance
选择stats\u实例。。。
从…起
哪里
... 
和()
按stats\u实例分组
按stats\u实例排序

注意:根据您的数据库引擎,语法可能会有所不同。

感谢您的建议,我试图实现的是为每个stat_实例生成数据,假设我只有一个实例,它在WHERE语句中使用该实例并仅生成一个,但当我有一个实例数组时,我希望sql语句为它在ArrayShanks循环中看到的每个stat_实例生成数据。我想实现的是为每个stat_实例生成数据,假设我只有一个实例,它在WHERE语句中使用该实例并只生成一个,但是当我有一个实例数组时,我希望sql语句为它在ArrayShanks循环中看到的每个stat_实例生成数据。我想实现的是为每个stat_实例生成数据,假设我只有一个实例,它在WHERE语句中使用该实例并只生成一个,但是当我有一个实例数组时,我希望sql语句为它在ArrayShanks循环中看到的每个stat_实例生成数据。我想实现的是为每个stat_实例生成数据,假设我只有一个实例,它在WHERE语句中使用该实例并只生成一个,但是当我有一个实例数组时,我希望sql语句为它在数组循环中看到的每个stat_实例生成数据