【发布时间】:2015-05-18 20:18:53
【问题描述】:
两个表,“user”和“tracks”,我想为每个还没有的轨道创建一个用户 (userid=0)。
我们没有用户所需的唯一电子邮件,因此旨在使用 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;
当然会报错:
'ERROR: more than one row returned by a subquery used as an expression'
我可以使用两个 SQL 调用并让父代码 (Python) 执行循环,但我认为正确的方法是在 SQL 语句中。
那么我如何使插入语句通过选择“循环”?
预期输出:
id | username | email
-----+-----------------------------------------------------------+-----------------------
62 | Sam Jackson | 1@infiniteglitch.net
63 | (unknown person) | 2@infiniteglitch.net
64 | Howard Cocel J. | 3@infiniteglitch.net
【问题讨论】:
-
您能否将
SELECT部分的预期输出添加到问题中。
标签: sql postgresql generate-series