2009-10-08 7 views
1

다음 MYSQL 쿼리를 실행하면 Order_Comments 테이블에 존재하지 않는 Order_Info 테이블의 모든 유효하지 않은 Comment_ID이 표시됩니다. 어떻게하면이 쿼리를 수정하여 발견 된 각 레코드에 대해 으로 Comment_ID 값을 설정할 수 있습니까?MYSQL 쿼리의 1 열을 Null로 설정하십시오.

SELECT Order_Info.* 
    FROM Order_Info 
LEFT JOIN Order_Comments ON Order_Info.COMMENT_ID = Order_Comments.Comment_ID 
    WHERE Order_Comments.Comment_ID IS NULL 
     AND Order_Info.COMMENT_ID IS NOT NULL 

Order_Comments 테이블은 다음과 같습니다

Comment_ID Order_Number Order_Comments 
14   8989  Submitted by Gordon, Customer Se... 
15   4544  Please include the cd when the b... 
17   8787  Previously ordered by company, a... 
23   8789  We downloaded the trial. Our is q... 

답변

1

당신은 절

일반 영어
UPDATE Order_Info oi 
SET comment_ID = NULL 
WHERE NOT EXISTS (
    SELECT * 
    FROM Order_Comments oc 
    WHERE oc.comment_ID = oi.comment_ID) 

이 곳에서 사용되는 상관 하위 쿼리와 업데이트 문을 쓸 수 있습니다 행 commentID).

문은 표준 SQL이어야하며 mySQL 특정이 아니어야합니다.

+0

매력처럼 작동했습니다! 고맙습니다. 나는 이것을 유사한 상황의 다른 테이블에서 실행한다는 것을 두 번 확인했다. 다시 감사합니다! – shaiss

0

내 솔루션은 대안의 더이었다.

  1. 수출 오픈 오피스 Calc를 오픈하고 Order_Info 테이블
  2. 가져 오기 새로운 CSV 파일의 결과를 그대로 헤더
  3. 실행 쿼리를 떠나는 comment_ID 필드를 삭제 및 삭제 CSV 파일로 위의 쿼리, 1 단계에서 생성하고 NaviCat을 사용하여 추가하십시오.

어쩌면 이상적인 해결책 일 수도 있지만 효과가있었습니다. OrderInfo,이에 대한 OrderComments에 일치하는 항목이없는 경우 null로 commentID을 설정

관련 문제