Disons que j'ai une liste de valeurs, comme ceci: J'ai besoin du top 10 % em> strong> de cette liste - J'ai essayé: p> mais cela ne fonctionne pas. Le problème est que je ne connais pas le montant des enregistrements avant de faire la requête. Aucune idée? P> p>
4 Réponses :
Vous pouvez également essayer avec cela:
SET @amount =(SELECT COUNT(*) FROM page) /10; PREPARE STMT FROM 'SELECT * FROM page LIMIT ?'; EXECUTE STMT USING @amount;
meilleure réponse que j'ai trouvée: changer le 10 pour obtenir un pourcentage différent. p> p>
J'ai une alternative qui n'a pas été mentionnée dans les autres réponses: Si vous accédez à partir de n'importe quelle langue où vous avez un accès complet à l'API MySQL (c.-à-d. Pas le MySQL CLI), vous pouvez lancer la requête, poser combien de des rangées, il y aura, puis casser la boucle s'il est temps.
par exemple en python: p> Ceci fonctionne uniquement avec OTOH, le trafic de ma solution pourrait être trop élevé - toutes les lignes doivent être transférées. p> p> mysql_store_result () code>, pas avec mysql_use_result () code>, comme ce dernier exige que vous acceptez toujours toutes les lignes nécessaires. P>
Si vous le feriez pour une situation absente ou une situation aléatoire - j'ai commencé à utiliser le style suivant: Si vous en avez besoin pour être aléatoire mais contrôlable que vous pouvez Utilisez une graine (exemple avec PHP): p> enfin - s'il s'agit d'une sorte de chose dont vous avez besoin de contrôle total sur Vous pouvez réellement ajouter une colonne qui contient une valeur aléatoire Chaque fois qu'une ligne est insérée, puis interrogeez-la à l'aide de ce p> car cela ne nécessite pas de tri, ni commander par code> - il est O (n) plutôt que o (n lg n) p> p>
Notez que ces requêtes ne pouvaient rien revenir d'aucun enregistrement à tous (il est simplement que la probabilité de tout enregistrement donné dans les Resultset est de 0,1).
Dupliqué possible de Limite de mySQL définie à la chaîne
Dupliqué possible de Convertir la requête SQL Server en MySQL
Meilleure réponse des dups: Stackoverflow.com/Questions/5522433/...
@Tomalak: merci, ça a l'air génial!