如何使用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) 展开
例如:
先通过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) 展开
4个回答
展开全部
如果想实现这个修改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);
如果是不能用一个简单的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);
展开全部
update barcode set colorid = 'B' where goodis between 100 and 110
结果集是个内存中的临时表,更新了有意义吗。
结果集是个内存中的临时表,更新了有意义吗。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
update colorid='B' where goodis between 100 and 110
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以使用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);
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);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询