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

Sql 在此上下文中不允许子查询。只允许使用标量表达式,sql,sql-server-2000,coldfusion-10,Sql,Sql Server 2000,Coldfusion 10,我的客户正在运行MS SQL Server 2000。 我完成了一个项目,但我没有意识到MS SQL Server 2000将不允许在值中插入select INSERD,因此出现错误: Subqueries are not allowed in this context. Only scalar expressions are allowed. 当我运行以下查询时: insert into table_one (greeting_column, name_column) values (

我的客户正在运行MS SQL Server 2000。 我完成了一个项目,但我没有意识到MS SQL Server 2000将不允许在值中插入select INSERD,因此出现错误:

Subqueries are not allowed in this context. Only scalar expressions are allowed.
当我运行以下查询时:

insert into table_one (greeting_column, name_column)
values (
         'hello',
         (select column_1 from table_to where name = 'bob')
       )
我从coldfusion10调用此查询。 对于这个问题,我已经实现了一个使用coldFusion10的解决方案,方法是替换调用查询的select语句并将结果存储在coldFusion列表变量中,然后迭代一个循环,将CF列表变量的内容插入到其各自的记录中,但这比简单的SQL语句需要更多的处理。我在另一个网页上找到了解决方案,通过这样做解决了这个问题(是的,我知道做“选择*”是不好的做法,这只是一个例子):

但我认为coldFusion不允许在查询中使用Transact-SQL变量(周末后会尝试)
有没有办法不使用Transact-SQL变量重新写入

我不再需要测试SQL Server 2000,但我不知道为什么它不允许您的查询,好吧,它是完全有效的。我怀疑是Coldfusion或是您的访问提供商阻止了它

无论如何,我确信以下内容是有效的:

insert into table_one (greeting_column, name_column)
Select 'hello',
        column_1 
from table_to 
where name = 'bob'

我不再使用Microsoft SQL Server 2000,但这也应该可以使用,只需将值替换为SELECT并删除括号:

insert into table_one (greeting_column, name_column)
SELECT 
         'hello',
         (select column_1 from table_to where name = 'bob')

在旁注中,当与INSERT INTO语句一起使用时,切勿使用
SELECT*
。始终在select和Insert into语句中显式使用列名。您永远不知道源表中的列顺序与目标表中的列顺序相同。@M.Ali我知道这一点(SQL 101),我从另一个网页上获得的示例中获取了select*。请注意,这也适用于SQL 2005。我在MSSQLServer2K中进行了测试。不能在MS SQL Server 2K中的insert values中执行select语句。您将得到:在此上下文中不允许子查询。只能使用标量表达式allowed@ConfusedDeer你是否正在阅读你发布的这些链接?!?他们都跟我说的一模一样,
INSERT..SELECT..
是在SQL Server 2000中实现这一点的方法@混乱的鹿-我想你们把线弄错了。听起来您仍然在谈论原始查询/错误,而RBarryYoung则在谈论使用不同的方法:插入/选择。上面的查询肯定是有效的,所以如果它对您不起作用,那么您所做的与发布的内容不同。@Leigh同意。显然,这更像是一种错误的沟通/误解。在浏览了@Confusedder和RBarryYoung的评论后,我得出结论,Confusedder实际上是在试图对RBerryYoung回复的第一段(而不是实际的SQL查询)发表评论,他说“好吧,这是完全正确的。我怀疑是Coldfusion或您的访问提供商阻止了它。”。原因是它在SQL Server 2000中并不完全有效,但仅在更高版本中有效。谢谢。如果它解决了我的问题,我将更新并标记为已回答。
insert into table_one (greeting_column, name_column)
SELECT 
         'hello',
         (select column_1 from table_to where name = 'bob')