如果你的group by只是为了从结果中去除重复项,我建议使用查询将它们削减,然后可以使用cfloop(选择不同并减少返回列列表)。
如果你使用group by来“分组”结果,可以在循环内部运行一个计数器和一个cfif语句,在第一个循环内省略后续结果。
如果需要cfbreak,可以通过匹配前一行的值来模拟cfloop中的group by选项。
<cfloop query="queryname">
<cfif queryname.column[currentrow-1] neq queryname.column[currentrow]>
#queryname.column#
</cfif>
</cfloop>
随机笔记:您可以在组合的cfoutput的任何/所有级别上使用maxrows
<cfset tmp = querynew('id,dd')>
<cfloop from="1" to="20" index="i">
<cfset queryaddrow(tmp,1)>
<cfset querysetcell(tmp,'id',rand(),i)>
<cfset querysetcell(tmp,'dd',(i mod 4),i)>
</cfloop>
<cfquery dbtype="query" name="tmp">select * from tmp order by dd</cfquery>
<cfoutput query="tmp" group="dd" maxrows="2">#dd#<br
<ul>
<cfoutput maxrows="2" group="id"><li>#id#</li></cfoutput>
</ul>
</cfoutput>
cfoutput
有点像《加州旅馆》。据我所知,没有优雅的方法可以提前跳出它。如果你正在使用像 MS SQL 2005 这样的数据库,我建议限制 SQL 中的行数,而不是在cfoutput
中限制。 - Leigh