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

标签 sql sql-server-2000 coldfusion-10

我的客户正在运行 MS SQL Server 2000。 我完成了一个项目,但我没有意识到 MS SQL Server 2000 不允许在值中选择插入,从而给出错误:

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 语句需要更多的处理。我在另一个网页上找到了解决方案,通过这样做解决了这个问题(是的,我知道执行“select *”是不好的做法,这只是一个例子):

CREATE PROC whatever
@REC int,
@ChangedIP varchar(15),
@ChangedBY varchar(30)
AS
INSERT INTO table_LOG
SELECT *, GETDATE(), @ChangedID, @ChangedBy FROM table WHERE record = @REC

但我认为 ColdFusion 不会允许在查询中使用 Transact-SQL 变量(将在周末后尝试) 有没有一种方法可以不使用 Transact-SQL 变量来重写?

最佳答案

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

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

关于sql - 在此上下文中不允许使用子查询。只允许使用标量表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22284661/

相关文章:

coldfusion - 使用 REFind 查找字符串中的多次出现

coldfusion - 如何在 ColdFusion 10 的 cfhttp 标签中添加 TLS 1.2

sql - concatrelated vba excel的使用

sql - 更新数组json的数据

php - mysql 查询来搜索地址或邮政编码

sql server 2000比较明细总和与总金额

tomcat - ColdFusion 10 实例/Tomcat 以可预测的时间间隔死亡(死亡白屏)

SQL:将查询输出更改为具有两个单独的列,而不是具有 2 个值的行

sql server 2000 在 View 中使用提示

SQL Server 使用 "Group By ... With Cube"获取不同计数