独特的QoQ自动应用订单

时间:2015-03-04 12:54:03

标签: coldfusion coldfusion-9 cfml qoq

我正在使用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,我会得到预期的结果:

  1. [空字符串]
  2. 命名
  3. 约翰
  4. 约翰
  5. 亚当
  6. 史蒂夫
  7. 鲍勃
  8. 鲍勃
  9. 当我添加不同的时候,我得到

    1. [空字符串]
    2. Adam
    3. Bob
    4. John
    5. 姓名
    6. 史蒂夫
    7. 知道如何防止这种不必要的排序吗?

      修改

      最终解决方案是按照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>
      

1 个答案:

答案 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