2011-09-22 2 views
2

내 쿼리가이 오류 ORA-01427를 반환 모두가 같은 열 PartNoMaterial_Desc을 가지고 Table_aTable_b : 단일 행 부질의는 하나 이상의 행 업데이트를 반환, 이것은 내가 두 개의 서로 다른 테이블이ORA-01427 : 단일 행 부속 조회가 두 개 이상의 행을 리턴합니다. 도움?

Update Table_b B 
Set B.Material_Desc = (Select A.Material_Desc From Table_a A Where A.PartNo = B.PartNo) 

내 쿼리입니다 . 의 Table_bPartNo이 같을 때 Material_DescTable_a으로 업데이트하고 싶습니다.

위의 쿼리는 ORA-01427 오류를 반환합니다. 누구든지 내 쿼리를 수정할 수 있습니까?

+0

사용중인 데이터베이스 서버의 이름을 제공해야합니다. 그것에 따라 더 나은 답변을 제공 할 수 있습니다! – krtek

+0

오류 번호가 주어지면 오라클이라고 말할 수 있습니다. (더 나은 태깅은 여전히 ​​좋았을 것입니다.) –

+0

이것이 오라클 인 경우, 제 응답은 전혀 작동하지 않습니다 ... 다음을보십시오 : http://stackoverflow.com/questions/2446764/oracle- ON ( 가 Table_b.PartNo = Table_a.PartNo ON Table_a t2의 가입 Table_b의 T1로부터, 는 AS SELECT RID t1.rowid t2.Material_Desc )를 사용 Table_b INTO – krtek

답변

2

문제는 하위 쿼리가 하나만 있어야하는 모든 행을 반환한다는 것입니다. 이런 식으로 할 수는 없어.

사용중인 SQL 데이터베이스에 따라이 같은 더 나은 작동합니다 :

UPDATE Table_b B 
SET B.Materiel_Desc = A.Materiel_Desc 
INNER JOIN Table_a A ON A.PartNo = B.PartNo 

당신이 데이터베이스에 구문을 적응해야 가능하다. 예를 들어, MySQL에서는 이와 같이 할 수 없다고 생각합니다. http://dev.mysql.com/doc/refman/5.0/en/update.html에 따르면 다음을 수행해야합니다.

UPDATE Table_b, Table_A 
SET Table_b.Materiel_Desc = Table_A.Materiel_Desc 
WHERE Table_b.PartNo = Table_a.PartNo; 
+0

답장을 보내 주셔서 감사합니다. 시도해보십시오. – sailaja

+0

귀하의 질문에 내 의견에 말했다, 오라클을 사용하는 경우,이 작동하지 않습니다, 내가 제공 한 링크를 잘 따르십시오. – krtek

관련 문제