插入openquery和WHERE语句

时间:2018-03-12 17:19:26

标签: sql sql-server linked-server openquery

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

声明类似于:

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

我得到了“插入”部分的观点,但我无法理解“WHERE ServiceId&lt; 0”子句。

这种情况对INSERT(select?)语句引入了什么?

2 个答案:

答案 0 :(得分:0)

在这部分代码中:

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

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

答案 1 :(得分:0)

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

以上查询根据引号中提供的查询从&#39; SELECT col1, col2 FROM service WHERE ServiceId < 0&#39;)中提取来自链接服务器(已连接服务器)的数据。

它可以正确写成:

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

感谢。