2012-10-04 5 views
0

나는이 SQL 문이 :이 완벽하게 작동하고 조인 된 열이있는 가상 테이블을 보여줍니다SQL을 사용하여 가상 테이블을 업데이트하는 방법은 무엇입니까?

SELECT 
    t0.col0, 
    t0.col1, 
    t2.col0, 
    t2.col1, 
    t1.col0, 
    t1.col1, 
    t3.col3, 
    t3.col5, 
    t1.col2 
    FROM table0 t0 
    INNER JOIN table1 t1 ON t0.col0 = t1.col1 
    INNER JOIN table2 t2 ON t2.col0 = t1.col0 
    INNER JOIN table3 t3 ON t1.col0 = t3.col1 
    WHERE t1.col1 in (300, 301, 302, 302) 
    AND t2.col5 like 'V-%' 
    AND t3.delete = 'false' 

. 그래서 내가 직접이 방법처럼이 표를 업데이트하려고 : 성공하지

UPDATE T SET T.col1 = 1, T.col2 = '01.01.2012' 
FROM (
    SELECT 
    t0.col0, 
    t0.col1, 
    t2.col0, 
    t2.col1, 
    t1.col0, 
    t1.col1, 
    t3.col3, 
    t3.col5, 
    t1.col2 
    FROM table0 t0 
    INNER JOIN table1 t1 ON t0.col0 = t1.col1 
    INNER JOIN table2 t2 ON t2.col0 = t1.col0 
    INNER JOIN table3 t3 ON t1.col0 = t3.col1 
    WHERE t1.col1 in (300, 301, 302, 302) 
    AND t2.col5 like 'V-%' 
    AND t3.delete = 'false' 
) as T 

...에 그것이보기를 만들고에 업데이 트를 진행했다 만든 유일한 방법입니다.

하지만 한 테이블에서 가상 테이블을 업데이트 할 수 있습니까?

답변

0

테이블을 업데이트하지 않고 select 문을 출력하려고합니다. 생산량이 아무 곳에도 없기 때문에 가상 테이블이 아닙니다.

나는 이렇게 생각합니다.

UPDATE T SET t0.col0 = 1, t0.col1 = '01.01.2012' 
    FROM table0 t0 
    INNER JOIN table1 t1 ON t0.col0 = t1.col1 
    INNER JOIN table2 t2 ON t2.col0 = t1.col0 
    INNER JOIN table3 t3 ON t1.col0 = t3.col1 
    WHERE t1.col1 in (300, 301, 302, 302) 
    AND t2.col5 like 'V-%' 
    AND t3.delete = 'false' 
관련 문제