복붙노트

[SQL] 다른 테이블을 기반으로 업데이트 테이블

SQL

다른 테이블을 기반으로 업데이트 테이블

나는 다른 테이블의 다른 열을 기준으로 테이블의 열을 업데이트하기 위해 노력하고있어.

UPDATE eval e
   SET rank = (SELECT p.desc
                 FROM Position p
                WHERE p.id = e.faculty 
                  AND p.date >= '2011-05-20'
              )

p.id 및 e.faculty에 해당합니다. 나는 아이디의이 같은 경우 p.desc으로 순위를 업데이트 할. (e.faculty 및 p.id)

어떤 도움도 좋을 것! :)

해결법

  1. ==============================

    1.SQL Server에 대한이 시도 :

    SQL Server에 대한이 시도 :

    UPDATE dbo.eval 
    SET rank = p.desc
    FROM dbo.Position p
    WHERE p.id = eval.faculty and p.date >= '2011-05-20'
    

    당신이 기본 테이블에 별칭을 필요로하는 경우 또는 (어떤 이유), 당신은이 작업을 수행 할 필요가 :

    UPDATE dbo.eval 
    SET rank = p.desc
    FROM dbo.eval e
    INNER JOIN dbo.Position p ON p.id = e.faculty 
    WHERE p.date >= '2011-05-20'
    
  2. ==============================

    2.당신은 WHERE 절 형태의 제한이 필요합니다; 당신이 사용하는 경우 당신 스칼라 하위 쿼리 예를 들어, 그것을 기반으로 할 수 EXISTS

    당신은 WHERE 절 형태의 제한이 필요합니다; 당신이 사용하는 경우 당신 스칼라 하위 쿼리 예를 들어, 그것을 기반으로 할 수 EXISTS

    UPDATE eval
       SET rank = (
                   SELECT p.desc
                     FROM Position p
                    WHERE p.id = eval.faculty 
                          AND p.date >= '2011-05-20'
                  )
     WHERE EXISTS (
                   SELECT *
                     FROM Position p
                    WHERE p.id = eval.faculty 
                          AND p.date >= '2011-05-20'
                  );
    

    위의 목표를 기본 테이블 평가보다는 상관 관계 이름 전자에 업데이트를합니다. 이것은 당신이 범위 밖으로 갈 것 때문에 (기본 테이블과는 달리) 전자에 할당하지 않으 즉 관계형 과제의 관점에서 SQL UPDATE 생각 많은 의미가 있습니다!

  3. from https://stackoverflow.com/questions/6023367/update-table-based-on-another-table by cc-by-sa and MIT license