这个错在哪里呢?

jskscxy 2011-02-22 05:21:39
更新语句:
update tpData set dz = dz/1000


错误提示如下:
消息 512,级别 16,状态 1,过程 tpJiChuZiLiao_trg,第 15 行
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。

请问哪里错了?
...全文
97 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
jskscxy 2011-02-22
  • 打赏
  • 举报
回复
哎呀!晕啊,表里有触发器,不好意思,兄弟们!
jskscxy 2011-02-22
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 acherat 的回复:]

SQL code

USE AdventureWorks2008R2

UPDATE Production.Product --少了个 . 或者 dbo.
SET ListPrice = ListPrice * 2
[/Quote]

不是这个问题,去掉dbo问题依旧。
z1zz22 2011-02-22
  • 打赏
  • 举报
回复
其他语句有问题、

贴出完整的、
jskscxy 2011-02-22
  • 打赏
  • 举报
回复
是这样,本来这列字段数据类型是int,现改为real,然后想更新原来的值。
AcHerat 元老 2011-02-22
  • 打赏
  • 举报
回复

USE AdventureWorks2008R2

UPDATE Production.Product --少了个 . 或者 dbo.
SET ListPrice = ListPrice * 2

xuejie09242 2011-02-22
  • 打赏
  • 举报
回复
语句不会出问题。
AcHerat 元老 2011-02-22
  • 打赏
  • 举报
回复

USE AdventureWorks2008R2

UPDATE Production..Product
SET ListPrice = ListPrice * 2

Oraclers 2011-02-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jskscxy 的回复:]
引用 1 楼 xiao_ai_mei 的回复:

语句没贴全吧?


就这些啊!我就是想把dz字段除1000
[/Quote]
上面错误信息表明是储存过程的第15行,怎么就这句?
快溜 2011-02-22
  • 打赏
  • 举报
回复

--sql没有问题
create table tb1(编号 int,尺寸 int)
insert into tb1
select 1,1000 union all
select 2,1200 union all
select 3,23456 union all
select 4,1299 union all
select 7,13462

update tb1 set 尺寸=尺寸/1000

select * from tb1

/*
编号 尺寸
----------- -----------
1 1
2 1
3 23
4 1
7 13
Xiao_Ai_Mei 2011-02-22
  • 打赏
  • 举报
回复
update tpData set dz = dz/1000


这个语句没问题
jskscxy 2011-02-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wxf163 的回复:]

dz/1000
你这句SQL返回了一堆值,导致你的列 不知道该改成哪个
[/Quote]

那该如何写呢?

帮助示例代码:
USE AdventureWorks2008R2 ;
GO
UPDATE Production.Product
SET ListPrice = ListPrice * 2;
GO
王向飞 2011-02-22
  • 打赏
  • 举报
回复

--> 数据库版本:
--> Microsoft SQL Server 2008 (RTM) - 10.0.1600.22
--> 测试数据:[TB]
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[TB]')
AND type in (N'U')) --U 代表你查询的是表
DROP TABLE [TB]
GO

---->建表
create table [TB]([name] varchar(4),[b] int)
insert [TB]
select '张三',80 union all
select '李四',70 union all
select '王五',60 union all
select '许六',100
GO



--> 查询结果
update [TB] set [b] = [b]/1000

SELECT * FROM [TB]



--> 删除表格
--DROP TABLE [TB]

对比来看,不是你SQL的问题,就是你数据的问题
jskscxy 2011-02-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xiao_ai_mei 的回复:]

语句没贴全吧?
[/Quote]

就这些啊!我就是想把dz字段除1000
王向飞 2011-02-22
  • 打赏
  • 举报
回复
dz/1000
你这句SQL返回了一堆值,导致你的列 不知道该改成哪个
AcHerat 元老 2011-02-22
  • 打赏
  • 举报
回复
这个语句没问题,估计是其他语句。
Xiao_Ai_Mei 2011-02-22
  • 打赏
  • 举报
回复
语句没贴全吧?

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧