SQL 中的错误 - 当子查询跟随 =、!=、<、<=、>、>= 或当子查询用作表达式时,这是不允许的

Posted

技术标签:

【中文标题】SQL 中的错误 - 当子查询跟随 =、!=、<、<=、>、>= 或当子查询用作表达式时,这是不允许的【英文标题】:Error in SQL - This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression 【发布时间】:2014-09-18 12:07:01 【问题描述】:

我正在尝试根据两个条件更新字段

UPDATE TABLE1 SET FIELD1 = (SELECT SUBSTRING(LEFT(FIELD2,3),2,2) FROM TABLE1) WHERE FIELD2 LIKE '0%' AND FIELD3 IN ('OK','YES')
UPDATE TABLE1 SET FIELD1 = (SELECT SUBSTRING(LEFT(FIELD2,3),1,2) FROM TABLE1) WHERE FIELD2 NOT LIKE '0%' AND FIELD3 IN ('OK','YES')

Field1 具有以 0 和 1 开头的数字。 如果它以 0 开头,则更新第一个查询。 如果为 1 则为第二个查询

【问题讨论】:

【参考方案1】:

您不需要子查询。您只需要:

UPDATE TABLE1 
SET FIELD1 = SUBSTRING(LEFT(FIELD2,3),2,2) 
WHERE FIELD2 LIKE '0%' 
AND FIELD3 IN ('OK','YES')

【讨论】:

以上是关于SQL 中的错误 - 当子查询跟随 =、!=、<、<=、>、>= 或当子查询用作表达式时,这是不允许的的主要内容,如果未能解决你的问题,请参考以下文章

子查询返回的值不止一个.当子查询跟随在 =,!=,<,<=,>,>= 之后,或子查询用作

子查询返回超过 1 个值。当子查询跟随 = 或子查询用作表达式时,这是不允许的

语句错误时的MSSQL案例

SQL之子查询

如何使用 SQL 中的 Case 语句将数据插入临时表

SQL Server 触发器:子查询返回超过 1 个值