SQL INSERT INTO表A中基于Inner Join或where条件的值



我需要帮助,

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中的CountyIDs插入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命令结合起来将数据插入到表中。

我希望这能解释我建议的解决方案。

相关内容

  • 没有找到相关文章

最新更新