2009-07-30 4 views
0
SELECT (b.descr || ' - ' || c.descr) description 
FROM table1 a 
    INNER JOIN table2 b ON a.account = b.account 
    INNER JOIN table3 c ON a.product = c.product 
WHERE a.descr = ' ' ; 

위의 하위 쿼리를 사용하여 테이블을 업데이트하는 방법은 무엇입니까? 그것의 반환은 하나 이상의 행을 거의 8000 행? 이 문제에 대한 해결책이 있으시면 나와 공유하십시오.둘 이상의 행을 반환하는 하위 쿼리가있는 테이블 업데이트

+0

테이블 만들기 스크립트를 게시하십시오. 모든 시간을 절약 해줍니다. – Liao

+0

미리보기, 당신이 직면하고있는 똑같은 문제 *에 대해이 질문을 포함한 네 가지 질문이있는 것으로 보입니다. 1) http://stackoverflow.com/questions/1199733/getting-extra-rows-after-joing-the-table-using-left-join 2) http://stackoverflow.com/questions/ 1198183/update-a-table-the-other-two-table-please-help-me-in-this 3) http://stackoverflow.com/questions/1204563/updating- row-with-subquery-returning-multiple-rows – Liao

+0

또한 StackOverflow FAQ를 읽어 보시기 바랍니다. (내가 아는 3 가지 덧글 - 다음번에 더 좋을 것이다!) – Liao

답변

1

난 당신이 정확하게 뭘 원하는지 이해하지 않지만, 당신은 부속 문에서 하위 쿼리를 사용할 수 있습니다

UPDATE table1 a SET a.descr = (
    SELECT MAX(b.descr || ' - ' || c.descr) 
    FROM table2 b, table3 c 
    WHERE b.account = a.account AND c.product = a.product 
) 
WHERE a.descr = ' ' 

최대()는 당신을 위해 값을 선택합니다. 직접 선택하려는 경우 하위 쿼리를 추가로 제한하십시오.

+0

@ steve 나는 table2와 table 3에 대한 설명을 concatinating하여 table1 필드 descr을 업데이트하려고한다. select 문을 사용한다. 내가 그것을 업데이 트하려고하면 하나 이상의 행을 반환하는 오류 하위 쿼리를 보여주는. 이걸 좀 도와 주실 래요? – Prem

+0

게시 된 내역서가 트릭을하지 않습니까? –

1

SQL 서버에서 하위 쿼리가 1 행 이상 반환되면 데이터베이스는 오류를보고합니다.

경우에 따라 하위 쿼리 결과 값이 같으면 MAX() 또는 MIN() 함수를 사용하여 DB에서 값을 선택하십시오.

+0

다른 행의 다른 값을 가진 테이블을 업데이트하려고합니다. max()를 사용하면 동일한 값으로 업데이트됩니다. 내가 틀렸다면 나를 바로 잡아라. 해결책을 찾는데 도와주세요. – Prem

0

시도 : 여러 행을가

UPDATE a SET descr = (b.descr || ' - ' || c.descr) 
FROM table1 a 
    INNER JOIN table2 b ON a.account = b.account 
    INNER JOIN table3 c ON a.product = c.product 
WHERE a.descr = ' ' ; 

는 표 1은 본 마지막으로 종료됩니다.

Rob

관련 문제