2011-01-06 29 views
7

Tôi muốn tạo ra một tuyên bố truy vấn chọn với autonumber .. như ..autonumber trong lựa chọn công bố trong SQL Server

select * from tbl1 

sẽ cho tôi tất cả mọi thứ từ bảng.

Kết quả tôi muốn nhận được là ..

1   data 
2   data 
3   data 

Vậy làm thế nào tôi có thể làm để có được con số đó .. ??

như ..

select (for autonumber), * from tbl1 

dữ liệu trong bảng của tôi sẽ lặp đi lặp lại (không có dữ liệu độc đáo)

Trả lời

19

Sử dụng ROW_NUMBER:

SELECT ROW_NUMBER() OVER (ORDER BY col1) AS rn, * FROM tbl1 

Để lọc các kết quả dựa trên việc sử dụng số hàng này:

SELECT * FROM 
(
    SELECT ROW_NUMBER() OVER (ORDER BY col1) AS rn, * FROM tbl1 
) T1 
WHERE rn = 5 
+0

yea .. đó là câu trả lời đúng. Tôi muốn làm sth như .. SELECT ROW_NUMBER() OVER (ORDER BY col1) AS rn, * FROM tbl1 trong đó rn = 5; Rõ ràng nó không hoạt động như thế .. bất kỳ giải pháp cho điều đó? – william

+1

@william: Bạn cần tạo số hàng trong bảng có nguồn gốc và bộ lọc trong một lựa chọn bên ngoài. Tôi sẽ cập nhật câu trả lời của mình để chứng minh điều này. –

+0

Tôi có thể ngớ ngẩn khi đặt câu hỏi này. Nhưng wht là T1? Và tôi không thể đặt 'theo thứ tự' trong câu lệnh chọn bên trong, điều đó có bình thường không? – william

0

Bạn có thể cần phải tìm bù đắp của danh tính, ví dụ: ID cuối cùng của bảng thứ hai:

DECLARE @lastAutoID int 
SET @lastAutoID = abs((Select max(convert(float,[ConsID])) 
FROM [RXPIPEDB]...[consumption])) 

Sau đó sử dụng ROW_NUMBER():

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