我将 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"
更好的方法?
谢谢!
最佳答案
您可以使用多表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'
;
关于mysql - 是否可以在 MySQL 更新语句中标记重复记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13235930/