này sẽ không giúp bạn, nhưng SQL không đảm bảo trật tự hàng trừ khi nó được yêu cầu một cách rõ ràng, vì vậy ý tưởng rằng họ sẽ được trả lại theo thứ tự bạn mong đợi có thể đúng cho một tập hợp nhất định, nhưng khi tôi hiểu ý tưởng về các kết quả dựa trên thiết lập, về cơ bản không được đảm bảo để hoạt động đúng. Bạn có thể muốn có một khóa được trả về từ UDF nếu nó được liên kết với một thứ gì đó đảm bảo thứ tự.
Mặc dù vậy, bạn có thể làm như sau:
declare @val int
set @val=1;
Select Val1,Val2 from
(select Value as Val2, ROW_NUMBER() over (order by @val) r from udf1) a
join
(select Value as Val2, ROW_NUMBER() over (order by @val) r from udf2) b
on a.r=b.r
Biến giải quyết các vấn đề cần một cột để sắp xếp theo.
Nếu bạn có tư cách để chỉnh sửa UDF, tôi nghĩ thực hành tốt hơn là sắp xếp dữ liệu ra khỏi UDF, và sau đó bạn có thể thêm ident int identity(1,1)
vào bảng đầu ra của mình trong udf, điều này làm rõ điều này.
Việc reaosn này có thể quan trọng là nếu máy chủ của bạn quyết định chia kết quả udf thành hai gói. Nếu hai đến ra khỏi thứ tự bạn mong đợi, SQL có thể trả lại chúng theo thứ tự nhận được, điều này sẽ hủy hoại giả thiết rằng UDF sẽ trả về các hàng theo thứ tự. Đây có thể không phải là một vấn đề, nhưng nếu kết quả là cần thiết sau này cho một hệ thống thực sự, lập trình thích hợp ở đây ngăn ngừa lỗi bất ngờ sau này.
Nguồn
2012-04-18 21:08:43
Làm thế nào để bạn đảm bảo thứ tự của các hàng sắp ra khỏi UDF? –