2012-05-03 32 views
13

thể trùng lặp:
How to write a (MySQL) “LIMIT” in SQL Server?T-SQL tương đương với cú pháp MySQL LIMIT x, y là gì?

Làm thế nào tôi có thể thay đổi truy vấn của tôi với LIMIT Bên cho một SQL Server?

Code:

SELECT apretiz FROM tableApoint WHERE price = '$newprice' LIMIT 5; 

Nhiều việc không làm việc vì vậy chỉ cần yêu cầu giúp đỡ

Và làm thế nào tôi có thể thay đổi LIMIT 5,10 bằng ví dụ? Tôi không thể sử dụng TOP cho nó?

+0

Edited cho một LIMIT 5,10 – pretyBoy

+0

Không các câu trả lời dưới đây cho thấy cú pháp cho 'SELECT *', ở đây nó là: 'CHỌN TOP (5) * TỪ [Tên bảng]' – K48

Trả lời

14

Như tôi đã nói chưa đầy một giờ trước, bạn phải sử dụng TOP! (LIMIT được sử dụng cho MYSQL)

Vì vậy, hãy thử xóa LIMIT 5 và làm SELECT TOP(5) apretiz.

Ngoài ra, hãy thử thêm đơn hàng theo (cùng một lý do so với trước đây).

Hãy thực hiện tìm kiếm trước khi yêu cầu mọi thứ. Link to old question

3

Sử dụng TOP keyword:

SELECT TOP 5 pretiz 
FROM tableApoint WHERE price = '$newprice' 

dùng LIMIT 5, 10 không phải là một phần của tiêu chuẩn SQL và chỉ có sẵn trong MySQL.

Bạn có thể sử dụng ROW_NUMBER() cho SQL làm giải pháp tạm thời và sẽ mang lại cho bạn cùng một đầu ra mong muốn.

SELECT * FROM ( 
    SELECT *, ROW_NUMBER() OVER (ORDER BY name) as row FROM tableApoint 
) a WHERE row >= 5 and row <= 10 
2

SQL Server 2005 trở lên

Nếu bạn đang sử dụng SQL Server 2005 trở lên, bạn có thể sử dụng chức năng ROW_NUMBER gán con số duy nhất để hàng của bạn và sau đó chọn một loạt các giá trị từ đầu ra.

Script:

CREATE TABLE table1 
(
    textvalue VARCHAR(10) NOT NULL 
); 

INSERT INTO table1 (textvalue) VALUES 
    ('i'), 
    ('a'), 
    ('e'), 
    ('h'), 
    ('c'), 
    ('l'), 
    ('g'), 
    ('m'), 
    ('d'), 
    ('k'), 
    ('j'), 
    ('f'), 
    ('b'), 
    ('n'); 

;WITH letters as 
(
    SELECT textvalue 
     , ROW_NUMBER() OVER(ORDER BY textvalue) rownum 
    FROM table1 
) 
SELECT textvalue 
FROM letters 
WHERE rownum BETWEEN 6 AND 10; 

Output:

TEXTVALUE 
--------- 
    f 
    g 
    h 
    i 
    j 
16

Tính đến SQL Server 2012, bạn có thể viết

... 
ORDER BY thisColumn, thatColumn 
OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY 
Các vấn đề liên quan