我正在使用CFSpreadsheet读取.xlsx文件。
该文件有大约3000个重复项,我可以放心地忽略,所以我认为我做了select distinct
QoQ,但是一旦我这样做,结果就像order by col_1, col_2
被添加到查询这是一件非常糟糕的事情。
<cfspreadsheet query = "qSheet" ...>
<cfquery dbtype="query" name = "qDistinctSheet">
select distinct
col_1
, col_2
from
qSheet
</cfquery>
<cfdump var = "#qDistinctSheet#">
如果我删除distinct
,我会得到预期的结果:
当我添加不同的时候,我得到
知道如何防止这种不必要的排序吗?
修改
最终解决方案是按照Matt和Dan
的建议应用行号并使用组<cfset ids = []>
<cfloop query="qSheet">
<cfset ids[qSheet.currentRow] = qSheet.currentRow>
</cfloop>
<cfset queryAddColumn(qSheet,"id",ids)>
<cfquery dbtype="query" name="qDistinct">
SELECT
col_1
, col_2
, min(ID) AS firstID
FROM
qSheet
GROUP BY
col_1
, col_2
ORDER BY
firstID
</cfquery>
答案 0 :(得分:4)
您可以使用GROUP BY
选项,并使用电子表格查询中的ID行
<cfquery dbtype="query" name="qDistinct">
SELECT
col_1
, col_2
, min(ID) AS firstID
FROM
qSheet
GROUP BY
col_1
, col_2
ORDER BY
firstID