我需要帮助,
select
c.CityId, c.CityTitle, c.CountyID_fk, c.countytitle,
ct.CountyTitle, ct.CountyID
from
tblCity C
inner join
tblCounty CT on ct.CountyTitle = c.CountyTitle
这是显示两个表tblCity和tblCounty的查询的输出
我需要将tblCounty
中的CountyID
s插入tblCity
表中的CountyID_fk
列。
我试过了:
insert into tblCity (CountyID_fk)
select
(select CountyID
from tblCounty C
inner join tblCity ct on ct.countytitle = c.CountyTitle)
但是我只得到这个错误:
子查询返回多个值。当子查询跟随=、!=、<、<=、>、>=或子查询用作表达式时,不允许这样做。
有什么建议吗?
我尝试了上面所示的SQL查询,但我只得到一个错误。我想我需要稍微修改一下这个查询。
你几乎是正确的,但你不能选择,然后(选择)不做顶部1
insert into
tblCity (CountyID_fk)
select
CountyID
from
tblCounty C
inner join
tblCity ct
on
ct.countytitle = c.CountyTitle
接着Jeremys下面的评论…
上面部分:
insert into
tblCity (CountyID_fk)
是标准的T-SQL INSERT命令,用于指定要插入的表和要插入的属性(列值)列表。这是一个逗号分隔的列表,格式为:
(<column 1>,<column 2>,...,<Column n>)
其中n =要插入的列的总数
下一部分是提供要插入的数据的部分。在标准的INSERT命令中,您通常会提供关键字VALUES,后跟一个元组(行)列表,每行与上面的列列表相匹配。在你的例子中,So是一个"标准"。SQL INSERT看起来像:
INSERT INTO
tblCity (CountyID_fk)
VALUES
(<CountryID_fk value>);
现在,由于INSERT命令需要一组数据,即要插入的行数,因此可以通过多种不同的方式生成行数。
在我建议的解决方案中,行数由单独的SQL命令生成,如下所示:
select
CountyID
from
tblCounty C
inner join
tblCity ct
on
ct.countytitle = c.CountyTitle
这个SELECT语句将在countrytitle属性上(内部)连接表tblCountry和tblCity,并返回一组包含CountyID的行(可能只有一行)(如果(内部)连接失败,则返回空行)。
因此,这就是为什么您可以将INSERT命令与SELECT命令结合起来将数据插入到表中。
我希望这能解释我建议的解决方案。