Một trình soạn thảo hữu ích đã thêm 'Chọn' trước mỗi câu lệnh nhưng điểm của mục này là nó có thể tạo các khóa duy nhất cho mỗi hàng trong một lần trả lại, không chỉ một mục (Đối với điều đó, tôi sẽ sử dụng hàm Rand ()). :Chọn 100 Rand (), * hàng đầu từ tblExample
Sẽ trả về cùng một giá trị ngẫu nhiên cho tất cả 100 hàng.
Trong khi:Chọn 100 ABS hàng đầu (CHECKSUM (NEWID ())% 10), * từ tblexample
Sẽ trả về một giá trị ngẫu nhiên khác nhau từ 0 đến 9 trên mỗi hàng trong trả về. Vì vậy, trong khi select giúp sao chép và dán dễ dàng hơn, bạn có thể sao chép logic vào một câu lệnh select nếu đó là những gì được yêu cầu.
Điều này tạo ra một số ngẫu nhiên trong khoảng từ 0-9
SELECT ABS(CHECKSUM(NEWID()) % 10)
1 đến 6
SELECT ABS(CHECKSUM(NEWID()) % 6) + 1
3 đến 6
SELECT ABS(CHECKSUM(NEWID()) % 4) + 3
Động (Dựa trên Nhận xét của Eilert Hjelmeseths, được cập nhật để sửa lỗi (+ thành -))
SELECT ABS(CHECKSUM(NEWID()) % (@max - @min - 1)) + @min
Cập nhật dựa trên nhận xét:
-
NEWID
tạo chuỗi ngẫu nhiên (cho mỗi hàng ngược lại) -
CHECKSUM
nhận giá trị của chuỗi và tạo ra số - môđun (
%
) chia cho số đó và trả về phần còn lại (nghĩa là giá trị tối đa nhỏ hơn một số so với số bạn sử dụng) -
ABS
thay đổi kết quả tiêu cực thành tích cực - sau đó thêm một vào kết quả để loại bỏ 0 kết quả (để mô phỏng một lần tung xúc xắc)