복붙노트

[SQL] SQL 갱신 TOP1 행 쿼리

SQL

SQL 갱신 TOP1 행 쿼리

아래의 쿼리는 노력하고 있습니다 :

update  top(1) ShipBillInfo 
set     shipfirstname='kkk' 
where   CustomerId='134';

예를 들면 : 내가 어떤 ID로 주문하려고하면 그러나 그것은 오류를 보여주고있다 :

update  top(1) ShipBillInfo 
set     shipfirstname='kkk' 
where   CustomerId='134' 
order by 
        OredrGUID desc;

해결법

  1. ==============================

    1.

    With cte as (
    select  top(1) shipfirtsname  
    From ShipBillInfo 
    where   CustomerId='134' 
    order by  OredrGUID desc)
    Update cte set shipfirstname='abc';
    
  2. ==============================

    2.왜 당신이 그나마 :

    왜 당신이 그나마 :

    update ShipBillInfo 
    set shipfirstname='kkk' 
    where OrderGUID = (select top (1) OrderGUID  
                       from ShipBillInfo 
                       where CustomerId = 134 
                       order by OredrGUID desc )
    
  3. ==============================

    3.나를 위해 일한 제안 된 솔루션 스레드 안전 솔루션 없음의 경우 (일부 행보다 같은 시간에 그것을 실행시에 한 번 이상 업데이트되었다).

    나를 위해 일한 제안 된 솔루션 스레드 안전 솔루션 없음의 경우 (일부 행보다 같은 시간에 그것을 실행시에 한 번 이상 업데이트되었다).

    이것은 일 :

    UPDATE Account 
    SET    sg_status = 'A'
    WHERE  AccountId = 
    (
        SELECT TOP 1 AccountId 
        FROM Account WITH (UPDLOCK) --this makes it thread safe
        ORDER  BY CreationDate 
    )
    

    업데이트 된 항목의 일부 열을 반환 할 경우, 당신은 당신의 업데이트 문이 넣을 수 있습니다 : OUTPUT INSERTED.AccountId을합니다 (SET과 WHERE 사이)

  4. from https://stackoverflow.com/questions/3860975/sql-update-top1-row-query by cc-by-sa and MIT license