La création d'un “Tableau de Nombres” dans MySQL
Je suis en train de générer un tableau de nombres consécutifs dans MySQL.
Je veux juste 2 colonnes; une clé primaire et d'une colonne de nombres avec une plage de 0-X, où X est très grand. Env. De 64 000 lignes devrait le faire. J'ai essayé ce code, sans succès:
CREATE TABLE numbers (
number INT NOT NULL
CONSTRAINT XPKnumbers
PRIMARY KEY CLUSTERED (number)
)
INSERT INTO numbers (number) VALUES (0)
DECLARE @i INT
SET @i = 20
WHILE 0 < @i
BEGIN
INSERT INTO numbers (number)
SELECT number + (SELECT 1 + Max(number) FROM numbers)
FROM numbers
SET @i = @i - 1
END
SELECT * FROM numbers
et j'obtiens cette erreur:
#1064 - Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre versions du serveur MySQL pour la bonne syntaxe à utiliser près de "CONTRAINTE XPKnumbers CLÉ PRIMAIRE CLUSTER (nombre) ) INSERT INTO' n ' à la ligne 3
Quelqu'un a des suggestions à faire ce travail?
Ajouter les 'valeurs' de `insert into table (colonnes) values (valeurs)
OriginalL'auteur user1262890 | 2012-03-17
Vous devez vous connecter pour publier un commentaire.
Il vous manque un point-virgule, virgule, et même après la correction de la syntaxe, il n'est toujours pas une bonne idée de choisir max de la table à chaque fois juste pour l'insérer plus de ligne dans une boucle.
Déposer et utiliser les générateurs de http://use-the-index-luke.com/blog/2011-07-30/mysql-row-generator :
Et si, pour quelque raison que ce soit vous avez vraiment besoin d'une table de nombres viens de faire:
Ok c'est me rend fou. Ce code est exactement ce dont j'ai besoin. Il fonctionne dans phpmyadmin et dans navicat, mais quand je l'amener dans dreamweaver de l'éditeur sql, il me dit qu'il y est une erreur mysql. Quand je laisse le code de la requête (malgré l'erreur) et essayez de tester la page web, la page des retours: Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre versions du serveur MySQL pour la bonne syntaxe à utiliser près de 'CREATE or replace VIEW generator_256 SELECT ( ( salut.n << 4 ) | lo.n ) n ' à la ligne 1 Ce que je fais mal?
Et quand j'ai essayé d'exécuter la requête pour insérer les lignes dans une table de nombres dans phpmyadmin, (je ne peux pas répondre à tous le code dans la boîte de commentaires), j'ai: #1064 - Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre versions du serveur MySQL pour la bonne syntaxe à utiliser près de 'CREATE or replace VIEW generator_256 SELECT ( ( salut.n << 4 ) | lo.n ) n', à la ligne 9
Ok malgré les erreurs, les points de vue en quelque sorte ont été créés et semblent être au travail. Le problème semble résolu pour le moment. Merci!
Octet décalage et bit à bit OU. Maintenant que les binaires de la magie. Nice! Viens de regarder cela de moi-même.
OriginalL'auteur piotrm
Il vous manque une virgule entre la colonne et de la contrainte, de la déclaration:
OriginalL'auteur Ken Keenan
De MySQL 8.0, il pourrait utiliser l'expression de table commune RÉCURSIVE pour générer de pointage de la table:
DBFiddle Démo
OriginalL'auteur Lukasz Szozda