Deux tables, 'user' et 'tracks' et je veux créer un utilisateur pour chaque piste qui n'en a pas déjà une (userid = 0).Insérer des lignes de tableau en fonction des lignes concaténées d'une série
Nous n'avons pas les e-mails uniques requis pour l'utilisateur visent donc à créer des e-mails factices en utilisant generate_series:
insert into users (username, email)
select artist, (
select concat(generate_series(1, (SELECT COUNT(filename)
FROM tracks where userid = 0)),'@domain.com')
) as email
from tracks
where userid = 0
group by artist;
Bien sûr obtenir l'erreur:
'ERROR: more than one row returned by a subquery used as an expression'
je pourrais utiliser deux appels SQL et que le code parent (Python) exécute la boucle, mais j'imagine que la bonne façon de le faire est juste dans l'instruction SQL.
Alors, comment faire en sorte que l'instruction Insert sorte, 'loop' à travers le select?
Le résultat attendu:
id | username | email
-----+-----------------------------------------------------------+-----------------------
62 | Sam Jackson | [email protected]
63 | (unknown person) | [email protected]
64 | Howard Cocel J. | [email protected]
Pourriez-vous ajouter à la question de la sortie attendue de la partie 'select'. –
oui. bonne idée ... – MikeiLL