2017-10-19 4 views
0

업데이트 쿼리에서 집계를 사용할 수 없다는 것을 알고 있지만이 업데이트의 구문을 작성하는 방법을 알 수는 없습니다. 이 계정을 고려하지 않는 그러나, 그룹으로 쿼리 업데이트

UserID Item   InStock  R2S 
14   S0   Yes 
28   M23   No 
10   Ca2   No 
14   G01   No 
16   G21   Yes 
16   G33   Yes 

지금 내가 뭘 후 오전 것은

내가 아래 구문을 시도 yes로 갱신 R2S에 비해 모든 항목의 inStock이 '예'경우 각 사용자 ID입니다 샘플 데이터

입니다 14, 16 등 배수가있는 사용자 ID는 줄 단위로 표시됩니다.

두 항목 모두 r2s이므로이 방법을 사용자 아이디 16만으로 변경하려면 어떻게해야합니까?

UPDATE send SET R2S = 'Yes' WHERE (((InStock)='Yes')); 

답변

1

이것은 SQL Server이지만 제대로 작동하거나 가까운 서버 여야합니다.

update send 
set R2S = 'Yes' 
from send 
join (select UserId 
     from send 
     group by UserId 
     having min(InStock) = 'Yes') Maxes 
on send.UserId = Maxes.UserId 

하위 쿼리는 '아니오'인 사용자를 제거한 다음 가입합니다.

나는 데이터 포인트가 2 개의 장소 ("아니오"가 없다는 사실)에있는 것을 좋아하지 않는다. 쿼리를 사용할 준비가되면 쿼리를 수행해야합니다. 다음 독자가 따라하기가 쉬울 수 있습니다

또 다른 방법 :

update send 
    set R2S = 'Yes' 
    from send 
    where UserId not in (select UserId 
      from send 
      where InStock = 'No')