2010-05-13 5 views
0

내가이 데이터 구조를 반환 많은 것을 불평. 그래서 나는이 시도했다 :업데이트는 값이

UPDATE request 
SET building_id = (
    SELECT bu.building_id 
    FROM building bu 
    INNER JOIN lot lo ON bu.lot_id=lo.lot_id 
    WHERE lo.lot_code = request.lot_code 
); 

을하지만이 오류 받고 있어요 : 인해 잘못된 구문

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

그것을인가를? 데이터 모델은 로트 당 둘 이상의 건물을 허용하지만 실제 데이터에는 그러한 사례가 포함되어 있지 않으므로 lot_code 당 하나의 숫자가 building_id이어야합니다.

답변

2

아마 당신은이 쿼리를 실행 않습니다

UPDATE request 
SET building_id = bu.building_id 
FROM building bu 
    INNER JOIN lot lo ON bu.lot_id=lo.lot_id 
WHERE lo.lot_code = request.lot_code 
+0

의미와 결과는 올바른 본다. 고맙습니다! –

+1

안녕하세요! 문제가 해결되면 대답을 – Oleg

+0

+1으로 표시 할 수 있습니다. 한 번에 여러 행의 UPDATE를 처리합니다. –

0

아래 예와 같이 검색어에서 1을 사용하십시오.

 
UPDATE request 
SET building_id = (
    SELECT top 1 bu.building_id 
    FROM building bu 
    INNER JOIN lot lo ON bu.lot_id=lo.lot_id 
    WHERE lo.lot_code = request.lot_code 
);