7
votes

SQL, comptant de 0 à 10

Cela peut sembler stupide, mais je veux savoir comment (si possible) de compter de 0 à 10 par une commande SQL. Je veux dire que je veux une requête SQL qui produit une colonne constituée de chiffres de 0 à 10, comme celui-ci:

0
1
2
3
4
5
6
7
8
9
10

J'utilise actuellement MySQL 5.0


4 commentaires

Tout dialecte SQL ou SQL particulier?


Voir Séquence de numéro dans MySQL


@egrunin, c'est la même chose que la question préalable est la question. La seule différence réelle est celle utilisée 0-9 à titre d'exemple.


@Matthew Flaschen: Ah, je n'avais pas vu la réponse de @geertjanvdk, ​​qui traite du problème. Je vais lui donner un +1 afin qu'il monte au sommet :)


5 Réponses :


0
votes

Utilisation de PL SQL Nous pouvons faire comme suit

pour i en 1..1000 boucle xxx

boucle d'extrémité

est-ce utile Pour résoudre votre doute?


1 commentaires

Désolé j'ai oublié. Je veux avoir ces valeurs dans une vue simple à la jointure externe avec une table qui n'a pas toutes ces valeurs comme IDS, où j'ai besoin de tous. Bien sûr, je peux créer une table et insérer ces valeurs un par un, mais j'étais curieux de ne pas avoir besoin de créer une autre table pour une telle chose simple.



2
votes
select number  as n
from master..spt_values 
where type='p' 
and number between 0 and 10
Sorry I just noticed you were in MYSQL, this is MSSQL Only.

3 commentaires

Donc, il n'y a pas de syntaxe SQL standard pour accomplir une telle chose?


Cela vient de lire des valeurs de la table système SQL, je ne connais pas avec MySQL, donc la seule chose que je pourrais vous suggérer est de créer une table de chiffres - je pense que beaucoup de gens font et utilisent cela.


La méthode "Standard" dans MS SQL Server s'applique apparemment à MySQL, en jugeant à la question de la question Matthew Flaschen vous a référé à la séquence de numéro dans MySQL. Lire les deux questions, je dirais que la réponse de SPE109 est la meilleure. Créer une table 'utilitaire'. Dans MS SQL Server, maître.dbo.spt_values ​​ne dispose que de 0-2048, et est «Yuck» une table principale. Dans mon code, je crée ma propre table qui est toujours autour, qui est toujours peuplée et non gêlée. Je me réfère comme ceci comme suit: sélectionnez n des chiffres où n> = 1 et n <= 10. La même approche, garantie de travailler dans MySQL. Bonne chance!



1
votes

Vous pouvez utiliser une variable pour cela (bien que je ne puisse pas préciser à 100% sur vos exigences): xxx

Vous pouvez inclure les autres colonnes que vous aimez - je viens d'utiliser < code> ID à titre d'exemple. Si la table à partir de laquelle vous sélectionnez a au moins 11 lignes, cela fonctionnera. Le parenthèses sélectionné est exécuté en premier et initialise la variable @i à zéro.


3 commentaires

Désolé, je ne connais pas de variables. S'il vous plaît donnez-moi une vue simple qui contient des valeurs 0 à 10


Si l'idée d'avoir une vue à laquelle vous pouvez rejoindre une table existante est uniquement pour obtenir une liste de numéros séquentiels, je pense que vous rendez les choses plus difficiles pour vous-même, tout en impliquant une jointure où l'on n'est pas avait besoin. Pouvez-vous modifier votre question pour que vos exigences exactes soient claires?


C'est un moyen élégant de générer une plage



0
votes

juste pour référence, Cette réponse montre que cela puisse être fait dans Oracle, Postgres et MS SQL-mais pas MySQL, Hélas.


0 commentaires

3
votes

Si vous voulez simplement que les valeurs exactes 0 à 10, vous travaillez dans tous les SGBD: xxx

qui dit, le moyen le plus simple de résoudre des problèmes Lorsque vous avez besoin d'une liste séquentielle d'entiers consiste à créer un numéros permanent ou une table de conclusion contenant cette liste. De cette manière, cela n'aura pas d'importance à la manière dont il n'a pas été renseigné, car il n'a besoin que de peupler une fois.


0 commentaires