不同的 QoQ 自动应用订单
Distinct QoQ automatically applying order by
我正在使用 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
,我得到的预期结果应该是:
- [空字符串]
- 姓名
- 约翰
- 约翰
- 亚当
- 史蒂夫
- 鲍勃
- 鲍勃
当我添加 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>
您可以改用 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
我正在使用 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
,我得到的预期结果应该是:
- [空字符串]
- 姓名
- 约翰
- 约翰
- 亚当
- 史蒂夫
- 鲍勃
- 鲍勃
当我添加 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>
您可以改用 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