【问题标题】:Subquery returned more than 1 value. not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或当子查询用作表达式时,不允许
【发布时间】:2016-07-14 07:41:13
【问题描述】:

我正在尝试使用子查询更新表中的记录,但我无法做到。

更新员工集 Slug= ( 选择 SUBSTRING(Icc.Name,CHARINDEX(',',Icc.Name+1,len(Name)) 来自 C 类,Import_Category Icc 其中 c.Name 如 Icc.Name)

类别和导入类别表具有名称列。我做错了什么?请帮帮我。

【问题讨论】:

  • 我做错了什么?您的意思是除了不阅读消息中的文字之外,它会确切地告诉您您做错了什么? 子查询返回超过1个值含义非常明确。您的子查询返回了超过 1 个值。

标签: sql-server database


【解决方案1】:

错误信息一目了然。您的子查询返回的元素不止一个。您必须确保您的子选择仅返回 1 行。

举例:

update Employee
set Slug= (
  select top 1 SUBSTRING(Icc.Name,CHARINDEX(',',Icc.Name+1,len(Name))
  from Category C, Import_Category Icc
  where c.Name like Icc.Name)

【讨论】:

  • 这将在语法上起作用,但TOP 1 不会保证使用 正确 行。为了解决这个问题,我们需要更多关于查询目的的信息。
  • 没错,我举了一个例子来说明这一点。他肯定会根据自己的业务需求进行调整,因为他的问题中没有表达出来
猜你喜欢
  • 1970-01-01
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-24
  • 1970-01-01
  • 1970-01-01
  • 2012-06-04
相关资源
最近更新 更多