2009-11-03 4 views
2

새로운 열을 추가 한 테이블이 있으며 기존 정보를 기반으로 해당 열을 업데이트하는 SQL 문을 작성하려고합니다. 여기에 두 개의 테이블과 내가하고 싶은 것을 관련 컬럼중첩 된 하위 선택을 사용하여 Postgres에서 레코드 업데이트

 
'leagues' 
=> id 
=> league_key 
=> league_id (this is the new column) 
이제
 
'permissions' 
=> id 
=> league_key 

이 있으며, 일반 영어, 나는 다음과 같은 SQL을 시도했다이

Set leagues.league_id to be permissions.id for each value of permissions.league_key

입니다 :

UPDATE 리그 SET league_id = (SELECT id FROM permissions WHERE league_key = (S 별개의 ELECT 리그 FROM (league_key))) WHERE 리그 FROM league_key = (별개의 (league_key를 선택))

하지만

ERROR라는 오류 메시지가 점점 오전 : 하위 쿼리에 의해 반환 된 하나 개 이상의 행이 사용을 표현으로

이에 대한 어떤 도움이 크게는

의 요구 사항에 따라

답변

1

하위 쿼리를 식으로 사용하면 결과 집합을 반환 할 수 없습니다. 하위 쿼리는 단일 결과로 평가되어야합니다. 하위 쿼리 중 하나가 둘 이상의 값을 반환하기 때문에 표시되는 오류가 발생했습니다.

Here is the relevant documentation for pg84:

11

을 감상 할 수있다

세트 permiss의 각 값에 대해 permissions.id 할 leagues.league_id ions.league_key

이것은 그렇게합니다.

+0

나는 league_id하는 leagues.league_id 변경했지만, 그것은 완벽하게 작동! 정말 고마워 – GrumpyCanuck

관련 문제