0

我有一个 CSV 导入到temp_import_table其中,我在提交到数据库 ( mysql 5.0.88) 之前验证导入的数据。

我正在尝试在验证表中的记录中搜索重复条目,但我无法让它像这样工作:

<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 

问:
这不可能吗?有没有比循环一次以获取重复项和第二次将 dup-records 设置为更好的方法err="yes"

谢谢!

4

1 回答 1

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'
;
于 2012-11-05T16:20:49.860 回答