2013-01-18 33 views
6

Tôi đã có tập dữ liệu với khóa chính, khóa ngoại và giá trị chuỗi rỗng. Cách nhanh nhất để thêm số thứ tự vào dữ liệu dựa trên khóa ngoại là gì?Cách nhanh nhất để cập nhật các bản ghi hiện có bằng một chuỗi là gì?

QuestionConditionId là khóa chính của tôi, QuestionId là khóa ngoại. Đây là những gì các dữ liệu trông giống như sau khi chọn với một trật tự do trên QuestionId:

enter image description here

Sau khi cập nhật dữ liệu của tôi sẽ giống như thế này:

enter image description here

tôi có thể viết một vòng lặp cho điều này, nhưng tôi hy vọng cho một cái gì đó nhỏ hơn và hiệu quả hơn. Bất kỳ ý tưởng?

+1

bạn đang lukcy trong máy chủ sql để có 'row_number': D – bonCodigo

Trả lời

9
WITH T 
    AS (SELECT *, 
       ROW_NUMBER() OVER (PARTITION BY QuestionId 
             ORDER BY QuestionConditionId) AS RN 
     FROM YourTable) 
UPDATE T 
SET Sequence = RN 

Nhưng việc giữ này Sequence đồng bộ hóa cột sau khi chèn, cập nhật, xóa có thể phức tạp hơn giá trị. Bạn cũng có thể sử dụng ROW_NUMBER để tính thời gian SELECT thay vì lưu trữ.

+1

' + 1' tốt để biết rằng CTE có thể cập nhật ': D' –

+0

Hoàn hảo! Chính xác những gì tôi đang tìm kiếm – Mark

Các vấn đề liên quan