我有如下的coldfusion记录集:
id name
1 dog
1 dog
2 cat
2 cat
5 lion
记录计数是5,但我想要在不更改我的SQL的情况下使用coldfusion检索总唯一ID(在这种情况下为3)。
答案 0 :(得分:6)
如果我理解你的问题你想要计算独特的ID?使用查询查询:
<cfquery datasource="quackit" name="GetAll">
select * from myTable
</cfquery>
<cfquery dbtype="query" name="GetUnique">
select distinct(id) from GetAll
</cfquery>
#GetUnique.recordCount#
答案 1 :(得分:0)
另一种方法是将ID放入列表中,对其进行重复数据删除,然后对结果进行计数。
<cfset idList = valueList(myquery.id) />
<cfset dedupedIDlist = ListDeleteDuplicates(idList) />
<cfset uniqueIDcount = listLen(dedupedIDlist) />
<cfscript>
/**
* Case-sensitive function for removing duplicate entries in a list.
* Based on dedupe by Raymond Camden
*
* @param list The list to be modified. (Required)
* @return Returns a list.
* @author Jeff Howden (cflib@jeffhowden.com)
* @version 1, July 2, 2008
*/
function ListDeleteDuplicates(list) {
var i = 1;
var delimiter = ',';
var returnValue = '';
if(ArrayLen(arguments) GTE 2)
delimiter = arguments[2];
list = ListToArray(list, delimiter);
for(i = 1; i LTE ArrayLen(list); i = i + 1)
if(NOT ListFind(returnValue, list[i], delimiter))
returnValue = ListAppend(returnValue, list[i], delimiter);
return returnValue;
}
</cfscript>
ListRemoveDuplicates()是另一种做同样事情的方法,使用结构的特性,如果你将一个键添加到已经存在的结构中,它将被覆盖。