2016-06-16 2 views
-1

하위 문자열과 다른 테이블의 결과에 따라 테이블을 업데이트, 그들 중 하나가 포함 된 DescriptionCodeSQL 서버 : 내 데이터베이스에서 두 테이블이

된 table_1

Description | Code 
-------------------- 
123 street  23 
321 street2  12 
342 blabla  1 

다른 테이블 ID 항목 및 설명 열이

Table_2

Id | Description 
------------------------------ 
41  street (textidontwant) 
22  street2 (textidontwant) 
33  blabla (textidontwant) 

기본적으로, 표 2의 Id으로 표 1의 Code을 업데이트하지만, 표 1의 설명과 텍스트가 일치하도록 표 2의 설명을 트리밍하려면 부분 문자열을 사용해야합니다. .

내가 이미 다음은 서브 쿼리, 작성한

: 여기이 권리

SELECT LEFT([Description], CHARINDEX('(', [Description]) - 1)) FROM Table_2 

는 잘 괄호 안의 텍스트 트림,하지만 문제는 내가 수있을 것 수 없다는 것입니다 Table_2의 ID로 Table_1 코드 열을 업데이트하십시오.

시도해 보았습니다. 이 일을 :

UPDATE Table_1 
SET Code = (SELECT T2.Id FROM Table_2 T2) 
WHERE Table_1.[Description] = (SELECT LEFT([Description], CHARINDEX('(', [Description]) - 1)) FROM Table_2) 

하지만이 오류 얻을 :

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

어떤 아이디어?

도움 주셔서 감사합니다.

답변

0

하위 쿼리를 사용하지 마십시오. SQL 서버를 사용하면 업데이트 문에서 조인을 사용할 수 있습니다.

UPDATE T1 
SET Code = T2.Id 
FROM Table_1 T1 
INNER JOIN Table_2 T2 
    ON T1.[Description] = LEFT(T2.[Description], CHARINDEX('(', T2.[Description]) - 1) 
관련 문제