我将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-record设置为
err="yes"
更好的方法?谢谢!
最佳答案
您可以使用多表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'
;