gpt4 book ai didi

sql - 选择语法作为要插入的子查询

转载 作者:行者123 更新时间:2023-12-03 08:05:33 27 4
gpt4 key购买 nike

这是我要在SQL查询分析器中执行的操作。

Insert into db_name1.dbo.tb_name1 (select * from db_name2.dbo.tb_name2)

但我不断收到此错误消息
Server: Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'select'.
Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near ')'.

我想知道出了什么问题。子查询在SQL Server 2000中不起作用吗?
什么是正确的语法呢?我想将所有值从数据库的表列转移到另一个数据库的另一个表,而无需创建其元素的任何重复项,而只是覆盖当前值。

最佳答案

这是您认为应该进行查询的查询:

Insert into db_name1.dbo.tb_name1
(select * from db_name2.dbo.tb_name2)

这是编译器看到的查询:
Insert into db_name1.dbo.tb_name1(select * from db_name2.dbo.tb_name2)

即,表名后面的括号括起来表示“列的列表从这里开始”。但是您没有列列表。 select不是有效的列名。因此,错误。

通过删除括号可以轻松解决此问题:
Insert into db_name1.dbo.tb_name1
select * from db_name2.dbo.tb_name2

但是,包含要插入的列名更正确:
Insert into db_name1.dbo.tb_name1(col1 . . .)
select * from db_name2.dbo.tb_name2;

始终在插入语句中包含列名是一个好主意。如果您这样做了,则不必问这个问题。

关于sql - 选择语法作为要插入的子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21717244/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com