Sélectionner tous les enregistrements de l'utilisation de MySQL LIMIT et OFFSET requête
Je suis à la recherche d'un moyen pour effectuer:
SELECT * FROM table
mais en utilisant LIMIT
et OFFSET
comme suit:
SELECT * FROM table LIMIT all OFFSET 0
Est-il un moyen de l'écriture de l'instruction SQL à l'aide de LIMIT et OFFSET mais toujours obtenir TOUS les résultats?
(Bien sûr, je peux utiliser un IF
déclaration, mais je préfère éviter si possible)
Toute aide serait appréciée!
- pourquoi voulez-vous écrire une LIMITE si vous ne voulez que les résultats de requête-elle être limitée? Tout l'objectif de la LIMITE est (duh) pour LIMITER le nombre de résultats.
- Très simple: parfois, vous voulez écrire une seule ligne de code (ou le min lignes) qui couvre TOUS les différents scénarios.
- Exemple: Un script qui prend un argument que la valeur de la limite pour une requête SQL. Parfois, vous voulez l'exécuter pour 5, parfois pour 50, parfois, pour tous.
Vous devez vous connecter pour publier un commentaire.
De la Documentation de MySQL:
Afin d'obtenir toutes les lignes peut se présenter comme suit:
Cela peut ne pas être la meilleure façon de le faire, mais c'est le premier qui vient à l'esprit...
SELECT * FROM myTable LIMIT 0,1000000
Remplacer 1000000 avec certains adéquatement grand nombre que vous savez sera toujours plus grand que le nombre total d'enregistrements dans la table.
J'ai utilisé ce code dans nodeJS avec MySQL et il fonctionne bien, Il peut vous aider.
Pourquoi vous l'utilisez?
Si vous souhaitez définir la limite, alors vous pouvez mettre la limitation de la variable sinon passer de 0 à la variable.
Que l'enregistrement va grandir, utilisez
mysql_num_rows
pour trouver dynamiquement le nombre total d'enregistrements, au lieu d'utilisersome large number
.alors:
Peut-être pas la solution la plus propre, mais à fixer la limite à un nombre très élevé pourrait fonctionner. Décalage doit être 0.
Pourquoi ne pas utiliser un
IF
déclaration où vous ajoutez le limit et offset pour la requête sous la forme d'un énoncé est vrai?Vous pouvez recevoir un message d'erreur si vous définissez la limite d'un nombre très élevé tel que défini par mysql doc. Tout, vous devriez essayer de limiter 9999999999999, d'aller plus haut peut vous donner une erreur, sauf si vous configurez le serveur pour aller plus haut.
Vous pouvez utiliser la LIMITE d'une fonction, il n'est donc pas une mauvaise idée. Si vous l'utilisez dans une fonction, vous pouvez être amené à être Limite Tous à un moment donné et limite de 1 à un autre point.
Ci-dessous, je liste un exemple où vous pourriez voulez que votre application n'ont aucune limite.
fonction get_navigation($select = "*", $from= "pages", $visible= 1, $subject_id = 2, $order_by = "position", $sort_by = "asc", $offset=0, $limit = 9551615){
global $connexion;