为什么我不能表达这个子查询?还有其他选择吗?

时间:2010-01-16 15:28:01

标签: sql sql-server

我收到错误:

  

在此上下文中不允许使用子查询。只允许使用标量表达式。

为什么不允许子查询?我只是想将一些值移到同一数据库中的另一行。还有另一种表达方式吗? (这只是一次性操作......)

INSERT INTO 
    Html_Content (pageid, html_content) 
VALUES 
    (20, (SELECT page_text FROM pages WHERE pageid = 29))

2 个答案:

答案 0 :(得分:7)

将您的查询更改为:

INSERT INTO  
    Html_Content (pageid, html_content)  
SELECT  
    20, page_text FROM pages WHERE pageid = 29

推理是,只要您需要将子查询的内容放到另一个表中,就可以使用此格式。您收到标量错误,因为通过使用“值”选项,您告诉SQL您要为每列插入谨慎值,并且只插入一行。

答案 1 :(得分:2)

这样做:

INSERT INTO  
    Html_Content (pageid, html_content)  
VALUES  
    SELECT 20, page_text FROM pages WHERE pageid = 29