2012-11-05 3 views
0

temp_import_table에 CSV 가져 오기가 있는데 데이터베이스에서 커밋하기 전에 가져온 데이터의 유효성을 검사합니다 (mysql 5.0.88).MySQL 업데이트 문에 중복 레코드에 라벨을 붙일 수 있습니까?

내가 중복 항목에 대한 검증 테이블에서 레코드를 검색하기 위해 노력하고있어,하지만 난 그게 이런 식으로 동작하지 않습니다는 :

You can't specify target table 'import_pricat_csv' for update in FROM clause 
:

<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> 

이 오류가 발생합니다

질문 :
이것은 가능하지 않습니까? 중복을 얻으려면 한 번 루프를 돌리는 것보다 두 번째로 dup 레코드를 설정하는 것보다 더 좋은 방법이 있습니까 err="yes"

고마워요!

답변

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' 
; 
+0

아. 결코 들어 본 적이 없다. '5.0.88'에서이 작업을 시도하고 바라고 있습니다. 감사! – frequent

+0

완벽한! 가능하다고 생각하지 않았습니다. 다시 한 번 감사드립니다! – frequent

관련 문제