2012-06-23 4 views
-4

모든 행에서 열 값을 확인하고 where 절을 조건으로 검색하고 있습니다. 내가 선택은 특정 학생에 대한 모든 일치하는 결과가 null로 설정 할 열 채널 URI 값을 확인 할모든 행의 특정 열에 대한 쿼리 업데이트

SubscriptionID ChannelURI StudentID 
     1    XXXX    4 
     2    yyyy    4 
     3    XXXX    3 
     4    XXXX    4 
     5    XXXX    2 

다음과 같이 내 경우입니다.

그래서이 경우 행 3과 5는 null로 설정해야합니다.

내가 이것을 시도했다, 그러나이 경우

UPDATE SubscriptionCourse 
    Set ChannelURI = 1 
    , DeviceId = null 
    FROM SubscriptionCourse as t1 
INNER JOIN SubscriptionCourse as t2 
    on t1.ChannelURI = t2.ChannelURI 
WHERE StudentId! = 4 
+1

행 3과 5를 null로 설정해야하지만 다른 행에서는 왜 설정해야하는지에 대한 논리를 설명 할 수 있습니까? –

+2

더 나은 설명을 제공해야합니다. 당신이 달성하고자하는 것이 무엇인지 명확하지 않습니다. –

+0

죄송합니다. 미안하지만 분명히 밝히지 않았습니다. student_4가 아닌 다른 모든 studentid의 테이블에있는 모든 channeluri를 확인하고 studentid = 4 channel uri와 일치하는 항목이 있으면 일치하는 행을 null로 설정합니다. –

답변

0
update [table_name] set channelURI = "null" where SubscriptionID = 3 or SubscriptionID =5 

를 null로 studnetid = 4 이외의 모든 행 channeluri을 설정 SubscriptionID는 기본 키가 있어야합니다.

+0

이 경우가 아니며, 제출 한 쿼리에서 StudentId와 where 조건을 사용해야하며, subscriptionid를 어떻게 알 수 있습니까? 2 개 이상의 일치 항목이있는 경우 어떻게해야합니까? –

0
Update table set channeluri = null where studentid <> 4 

원하는 것을 원하십니까? 또는 학생 4와 동일한 URI를 가진 모든 것을 찾고 싶지 않습니까?

Update table set channeluri = null from table inner join table t2 on table.channeluri =t2.channeluri where table.studentid <> 4 and t2.studentid =4 

그런 뭔가, 내 휴대 전화에서 메신저, 아내는 PC

1

참조에게이 별명, 이름이 아닌, 절, FROM (이후 같은 테이블에 주어진 것 업데이트 할 테이블을 훔친 이름은 당신이 NULL로 ChannelURI를 설정하고 싶은 말은

UPDATE t1 
    SET t1.ChannelURI = 1 
    , t1.DeviceId = NULL 
    FROM SubscriptionCourse t1 
    JOIN SubscriptionCourse t2 
    ON t1.ChannelURI = t2.ChannelURI 
WHERE t1.StudentId != 4 

. 또한뿐만 아니라 테이블 별칭 WHERE 절에서 StudentId에 대한 기준을 규정. 두 번 참조하지만 문은 하나의 문자 값으로 설정된다 당신이 지정한대로 임무를 끝냈습니다. r 문을 사용했지만 테이블 별칭으로 열을 정규화했습니다.

나는 이것이 문제라고 생각하지 않지만 "같지 않음"비교 연산자 기호 (!=)에 공백을 포함시키지 않습니다. 나는 그걸 본적이 없어요. "같지 않음"비교 연산자에 <> 기호를 사용하는 것을 선호합니다.

문제와 예제에 대한 설명을 통해 왜 테이블에 가입해야하는지 분명하지 않습니다.

내가 먼저, 기본 키 컬럼 (들)의 값을 포함 expression_list과 더불어, SELECT <expression_list> 절과 UPDATESET 절을 대체하여 업데이트 할 행을 반환하는 SELECT 명령문을 작성하는 것이 좋습니다, 열 업데이트 할 항목 및 확인할 다른 열을 선택하십시오. SELECT가 업데이트 할 행을 반환하면 UPDATE 문으로 변환합니다.

관련 문제