update a
set nid=(select min(name) from a where staff_id='aaa')
where staff_id='aaa'你写错了,当然更新错了!
set nid=(select min(name) from a where staff_id='aaa')
where staff_id='aaa'你写错了,当然更新错了!
解决方案 »
- mssql 按字段重复行取第一行的问题
- 麻烦各位大虾给写个sql语句
- 求助mssql存储过程中执行顺序的问题
- 有点复杂的插入
- 求一查询
- 如何改变表中字段的排序方式
- SQL语句问题!
- sql2005问题
- 如何用SQL语句编写一个存储过程,又如何调用这个存储过程?(急!!!)
- 请教高手关于提高MSSQL的查询效率???
- liliah再请教:办公设备:sb_id,sydw(使用单位),price(价格),。。计算机(办公设备分类之一种):sb_id,CPU,MEmory,...,sydw,price这两个表是什么设计好?
- 如何将 5.0000000000000003E-2 这样的数转化为0.05 ????
但我想不通的是后面明明有where条件,但是为什么把表中所有的数据都更新了一次了?
(假如等于aaa的记录有6条,该表name列的最小值等于'1',那么就是把这6条记录的列nid更新为'1';但a表中所有记录的nid列全部都更新为'1')
set nid=min(name)
where staff_id='aaa'
这样的语句相当于:
update a
set nid=(select min(name) from a where staff_id='aaa')你的情况应该这样写:
update a
set nid=(select min(name) from a)
where staff_id='aaa'
/***************************************************/
铁的承诺,风的回忆.
永远的亚特兰蒂斯,永远的炎龙骑士团.
/***************************************************/
错误信息:
Msg 157, Level 15, State 1
An aggregate may not appear in the set list of an update statement.