如何使用update语句直接更新通过select出来的结果集中的某个字段?(同一个表)

MSSQL,同一数据表中,先通过select语句得出结果集后,如何在原来select语句的基础上结合update语句直接对其某个字段进行更新?例如:先通过select语句... MSSQL ,同一数据表中,先通过select语句得出结果集后,如何在原来select语句的基础上结合update语句直接对其某个字段进行更新?
例如:
先通过select语句得出结果集:select * from barcode where goodis between 100 and 110
然后如何通过update 语句直接对select * from barcode where goodis between 100 and 110
得出的结果集中的colorid字段进行直接更新?(即若colorid字段原来为A,现要直接通过update语句直接更新结果集中的colorid为B)
展开
 我来答
dingdang0702
推荐于2016-09-16 · TA获得超过384个赞
知道小有建树答主
回答量:375
采纳率:100%
帮助的人:244万
展开全部
如果想实现这个修改update barcode set colorid = 'B' where goodis between 100 and 110就行了
如果是不能用一个简单的where查询完成
需要把查询结果指定一个新的表名
mysql是不支持同一个sql语句中update或delete同一个表的select结果的
语句如下:
update barcode
set colorid='B'
where colorid in
(select colorid from (select * from barcode where goodis between 100 and 110) as a);
obsinia
2012-02-03 · TA获得超过355个赞
知道小有建树答主
回答量:655
采纳率:0%
帮助的人:348万
展开全部
update barcode set colorid = 'B' where goodis between 100 and 110

结果集是个内存中的临时表,更新了有意义吗。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
欢欢闲谈
2012-02-03 · 超过62用户采纳过TA的回答
知道小有建树答主
回答量:474
采纳率:0%
帮助的人:206万
展开全部
update colorid='B' where goodis between 100 and 110
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
闪亮旅游
2018-05-14 · 旅游推荐分享世界风光,带你足不出户云旅游
闪亮旅游
采纳数:6 获赞数:1

向TA提问 私信TA
展开全部
可以使用merge很简单的实现,语法如下:
MERGE INTO table_name alias1
USING (table|view|sub_query) alias2
ON (join condition)
WHEN MATCHED THEN
UPDATE table_name
SET col1 = col_val1,
col2 = col2_val
WHEN NOT MATCHED THEN
INSERT (column_list) VALUES (column_values);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式