2012-03-24 24 views
5

Vậy điều gì sẽ xảy ra khi bạn sử dụng giá trị âm trong mệnh đề LIMIT? Sẽ có những hậu quả tiêu cực (chơi chữ nhẹ)?Việc sử dụng giá trị âm cho MySQL LIMIT là gì?

Tôi không thấy bất kỳ tài liệu nào về vấn đề này và diễn đàn MySQL, như tôi đã nhớ, sux.

Bối cảnh: Tôi đang sử dụng MySQL CE 5.5.20. Tôi đã viết một thủ tục lưu trữ có tham số int và sử dụng nó cho mệnh đề LIMIT. Tôi cần một cách để trả về tất cả các hàng nếu tôi muốn, vì vậy tôi đã cố gắng chuyển qua -1 cho tham số giới hạn trong thủ tục/thủ tục lưu trữ của tôi và hoạt động đó.

+0

Tại sao không sử dụng số nguyên rất lớn thay vì -1 nếu bạn thực sự muốn đặt mệnh đề giới hạn? –

Trả lời

0

Khi sử dụng tính năng này trên các phiên bản MySQL khác, nó có thể gây ra lỗi.

The error in MySQL

3

Theo documentation, nó phải là một số nguyên không âm

Các LIMIT khoản có thể được sử dụng để hạn chế số lượng hàng được trả về bởi câu lệnh SELECT. LIMIT có một hoặc hai đối số dạng số, cả hai phải là các hằng số nguyên không âm (trừ khi sử dụng các câu lệnh đã chuẩn bị).

Nghe có vẻ giống như những gì bạn đang gặp phải là một lỗi không có giấy tờ, trong đó mysql sẽ ném một lỗi nếu các tham số không tuân theo những gì tài liệu yêu cầu.

Đề xuất của tôi sẽ là sử dụng SQL được sửa lỗi cú pháp trong thủ tục được lưu trữ của bạn. Bạn vẫn có thể sử dụng một int tiêu cực như một lá cờ để hiển thị tất cả mặc dù. Một cái gì đó như thế này

IF myparam >= 0 THEN 
    SELECT * FROM `mytable` LIMIT myparam; 
ELSE 
    SELECT * FROM `mytable`; 
END IF; 
Các vấn đề liên quan