À l'aide de variable dans la clause LIMIT de MySQL
Je suis en train d'écrire une procédure stockée où j'ai un paramètre d'entrée appelé my_size qui est un ENTIER. Je veux être capable de l'utiliser dans un LIMIT
clause dans un SELECT
déclaration. Apparemment ce n'est pas pris en charge, est-il un moyen de contourner cela?
# I want something like:
SELECT * FROM some_table LIMIT my_size;
# Instead of hardcoding a permanent limit:
SELECT * FROM some_table LIMIT 100;
- Si vous avez plus de contrôle de la version de MySQL que vous utilisez, il ressemble à ce qui est fixé de départ en v5.5.6. bugs.mysql.com/bug.php?id=11918
- trouvé une autre solution simple stackoverflow.com/a/4315661
- Notez que MySQL 5.7.16 (et peut-être d'autres) le
LIMIT @nrows OFFSET @noffset
stockées routine semble être rejeté trop, tandis qu'unLIMIT nrows OFFSET noffset
est acceptée, tant que vousDECLARE nrows INT; DECLARE noffset INT
à la routine du début.
Vous devez vous connecter pour publier un commentaire.
Une recherche s'est jusqu'à cet article. Je l'ai collé le texte ci-dessous.
Pour ceux qui ne peuvent pas utiliser MySQL 5.5.6+ et ne veux pas écrire une procédure stockée, il existe une autre variante. Nous pouvons ajouter la clause where sur une sous-sélection avec ROWNUM.
PROCÉDURE STOCKÉE
UTILISATION
Je sais que cette réponse tardive, mais essayez SQL_SELECT_LIMIT.
Exemple:
SELECT ...
partie de requêtes telles queREPLACE ... SELECT ...
.Cette fonctionnalité a été ajoutée à MySQL 5.5.6.
Cochez cette lien out.
J'ai mis à jour de MySQL 5.5 juste pour cette fonction et fonctionne très bien.
5.5 a aussi beaucoup de mises à niveau en place et je le recommande vraiment.
Une autre façon, la même qui a écrit "Pradeep Sanjaya", mais à l'aide de CONCAT:
PREPARE
etEXECUTE
déclaration. Une remarque importante : nous n'avons pas besoin d'utiliser Create procedure. Nous pouvons utiliserPREPARE
**et **EXECUTE
déclaration dans les grandes code sql trop.Depuis MySQL version 5.5.6, vous pouvez spécifier
LIMIT
etOFFSET
avec des variables /paramètres.Pour référence, voir le 5.5 Manuel, le 5.6 Manuel et @Quassnoi de réponse