使用常量将子查询的结果插入表中

时间:2009-08-18 05:10:54

标签: sql sql-server tsql

有关表格的大纲如下:

我有一个表,让我们称之为join,它有两列,都是其他表的外键。让我们调用两列userid和buildingid,这样join就像

+--------------+
| join         |
|--------------|
|userid        |
|buildingid    |
+--------------+

我基本上需要在这个表中插入一堆行。通过在此表中包含多个条目,将为每个用户分配多个建筑物。因此,用户13可以通过以下

分配给建筑物1,2和3
13 1
13 2
13 3

如果建筑物数量不变,我试图弄清楚如何在查询中执行此操作,也就是说,我将一组人分配到同一建筑物。基本上,(这是错的)我想做

insert into join (userid, buildingid) values ((select userid from users), 1)

这有意义吗?我也尝试过使用

select 1

我遇到的错误是子查询返回多个结果。我还尝试创建一个连接,基本上是一个也不成功的静态选择查询。

有什么想法吗?

谢谢, 克里斯

1 个答案:

答案 0 :(得分:20)

几乎!如果要插入查询的值,请不要尝试将它们放在values子句中。 insert可以将select作为值的参数!

insert into join (userid, buildingid)
select userid, 1 from users

此外,本着学习更多知识的精神,您可以使用以下语法创建一个不存在的表:

select userid, 1 as buildingid
into join
from users

这只有在表不存在的情况下才有效,但这是创建表副本的快捷方式!