0

temp_import_tableデータベースにコミットする前に、インポートしたデータを検証しているへの CSV インポートがあります ( 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 

質問:
これは不可能ですか? 1回ループして重複を取得し、2回目に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 に答える