たにーの楽しい闘争

日々の気になる事を書いていきます

【SQLServer】SELECT TOPやUPDATE TOPを使う時はorder byを必ず付けなければいけない理由

結論

ランダムで取得されてしまうため。
ランダムでも良いのであればorderbyを付けなくても良い。

UPDATE文の書き方に注意

orderbyを使わない書き方

UPDATE TOP (10) HumanResources.Employee
SET VacationHours = VacationHours * 1.25 ;

orderbyを使う場合

UPDATE HumanResources.Employee
SET VacationHours = VacationHours + 8
FROM (SELECT TOP 10 BusinessEntityID FROM HumanResources.Employee
     ORDER BY HireDate ASC) AS th
WHERE HumanResources.Employee.BusinessEntityID = th.BusinessEntityID;

参考

docs.microsoft.com

docs.microsoft.com