코드는 대략 이런 느낌 같은 (TSQL)를 정렬되지 않습니다다음 CTE 선택 주문 및 업데이트를 수행 한 후, 업데이트 결과는
WITH cte AS
(
SELECT TOP 4 id, due_date, check
FROM table_a a
INNER JOIN table_b b ON a.linkid = b.linkid
WHERE
b.status = 1
AND due_date > GetDate()
ORDER BY due_date, id
)
UPDATE cte
SET check = 1
OUTPUT
INSERTED.id,
INSERTED.due_date
주 : 실제 데이터가 동일 DUE_DATE 있습니다.
예를 들어 cte 내에서만 SELECT 문을 실행하면 예 : 1, 2, 3, 4에 대한 결과를 얻을 수 있습니다. 그러나 UPDATE 문 다음에 업데이트 된 결과는 다음과 같습니다. 4, 1, 2, 3
왜 (주문 변경)이 발생합니까?
같은 1 개의 쿼리에서 결과를 1,2,3,4로 다시 정렬하거나 순서를 변경하는 방법은 무엇입니까?
을하지만 데이터의 순서가 다른 의심하지만이 대 당신의 선택에 이르기까지 더 :이 코드는 가정 것을 순서대로 출력 값을 반환합니다 출력이 정렬되지 않았기 때문에 출력 절. –
[Microsoft] (https://msdn.microsoft.com/en-us/library/ms177564.aspx)에 따라 주문은 OUTPUT 절이 보장되지 않으므로이 출력을 새 SELECT TOP 4 이드, due_date ... ' – Polux2
@ AllanS.Hansen 미안 내 질문에 분명하지 않은 경우. 나는 cte select와 update 후에 같은 순서를 얻으려고했다. 업데이트가 완료되면 주문이 변경되지 않는다고 가정합니다. – kurakura88