mysql - 是否可以在 MySQL 更新语句中标记重复记录?

标签 mysql csv import duplicates updates

我将 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/

相关文章:

sql - sqlite3空外键将不会通过.import接受

mysql - 无法设置mysql wait_timeout变量值

mysql - SQL Server 2005/2008 - 通过命令行导入固定宽度的文本文件?

php - 通过php动态设置mysql中的join类型

mysql - 在 MySQL 中对域进行排序

linux - 如何创建脚本以将 sed 命令添加到文件中(bash 脚本)

go - 检查 Go 导入路径是否为本地

python - flask 配置类

python - 将python中的数据保存为CSV UTF-8文件格式的excel文件

php - MySQL 插入以解释在 PHP 上滚动的随机 CSV 行