插入到 openquery 和 WHERE 语句中

Insert into openquery and WHERE statement

我有一些SQL(不是我写的),我找不到它的意思。

声明类似于:

INSERT INTO OPENQUERY (linkedServerName, "SELECT col1, col2 FROM service WHERE ServiceId < 0") 
(col1, col2) 
SELECT col1, col2 FROM Service

我明白 "insert into" 部分的意思,但我无法理解 "WHERE ServiceId < 0" 子句。

INSERT (select?) 语句引入什么条件?

这部分代码:

INSERT INTO OPENQUERY (linkedServerName, "SELECT col1, col2 FROM service WHERE ServiceId < 0")

您详细说明了要放置数据的 table 和列,因此 WHERE 没有意义。也许在内部是允许的,因为引擎只是从那里检索 table 名称和列列表,所以它不会 return 任何错误。

INSERT INTO OPENQUERY (linkedServerName, 'SELECT col1, col2 FROM service WHERE ServiceId < 0') 

以上查询根据引号 ('SELECT col1, col2 FROM service WHERE ServiceId < 0') 中给出的查询从链接服务器(连接的服务器)提取数据。

可以正确写成:

SELECT col1, col2 INTO localtable
FROM OPENQUERY (linkedServerName, 'SELECT col1, col2 FROM Service WHERE ServiceId < 0')

谢谢。