我正在使用 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 的建议应用行号并使用 group by
<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>