2012-11-05 43 views
0

我有一個CSV導入到temp_import_table,其中我正在驗證導入數據庫之前導入的數據(mysql 5.0.88)。是否可以在MySQL更新語句中標記重複記錄?

我試圖尋找在重複的條目驗證表中的記錄,但我不能讓它這樣的工作:

<cfquery datasource="#session.datasource#"> 
    UPDATE import_pricat_csv 
    SET err = "ja", errtxt = "duplicate EAN" 
    WHERE iln = <cfqueryparam value="#Session.logId#" cfsqltype="cf_sql_varchar" maxlength="16"> 
     AND ean IN (
      SELECT ean 
      FROM import_pricat_csv 
      GROUP BY ean 
      HAVING COUNT(ean) > 1 
      ) 
</cfquery> 

這將引發一個錯誤:

You can't specify target table 'import_pricat_csv' for update in FROM clause 

問題:
這不可能嗎?有沒有更好的辦法比循環一次獲得重複和第二次設置重複記錄err="yes"

謝謝!

回答

1

您可以使用多臺UPDATE語法與物化組結果加入:

UPDATE import_pricate_csv NATURAL JOIN (
    SELECT ean FROM import_pricate_csv GROUP BY ean HAVING COUNT(*) > 1 
) t SET 
    import_pricate_csv.err = 'ja', 
    import_pricate_csv.errtxt = 'duplicate EAN' 
; 
+0

啊。從來沒有聽說過這個。嘗試並希望這可以在'5.0.88'中使用。謝謝! – frequent

+0

完美!沒想到這是可能的。再次感謝! – frequent

相關問題