做长页网站,网站功能建设中页面,家装室内设计案例分析图文,威海建设集团网站首页如何用一条sql语句实现批量更新#xff1f;mysql并没有提供直接的方法来实现批量更新#xff0c;但是可以用点小技巧来实现。
代码如下:
UPDATE mytable SET
myfield CASE id WHEN 1 THEN valueWHEN 2 THEN valueWHEN 3 THEN value
END
WHERE id IN (1,2,3);这里使用了c…如何用一条sql语句实现批量更新mysql并没有提供直接的方法来实现批量更新但是可以用点小技巧来实现。
代码如下:
UPDATE mytable SET
myfield CASE id WHEN 1 THEN valueWHEN 2 THEN valueWHEN 3 THEN value
END
WHERE id IN (1,2,3);这里使用了case when 这个小技巧来实现批量更新。
举个例子
代码如下:
UPDATE categories SET
display_order CASE id WHEN 1 THEN 3 WHEN 2 THEN 4 WHEN 3 THEN 5
END
WHERE id IN (1,2,3);这句sql的意思是更新display_order 字段如果id1 则display_order 的值为3如果id2 则 display_order 的值为4如果id3 则 display_order 的值为5。 即是将条件语句写在了一起。 这里的where部分不影响代码的执行但是会提高sql执行的效率。确保sql语句仅执行需要修改的行数这里只有3条数据进行更新而where子句确保只有3行数据执行。
如果更新多个值的话只需要稍加修改
复制代码 代码如下:
UPDATE categories SET
display_order CASE id WHEN 1 THEN 3 WHEN 2 THEN 4 WHEN 3 THEN 5
END,
title CASE id WHEN 1 THEN New Title 1WHEN 2 THEN New Title 2WHEN 3 THEN New Title 3
END
WHERE id IN (1,2,3);到这里已经完成一条mysql语句更新多条记录了。但是要在业务中运用需要结合服务端语言这里以java为例构造这条mysql语句
复制代码 代码如下: update idupdateSortUPDATEinclude refidTable_Name/SET display_order CASEif testsortList ! nullforeach collectionsortList open itemitem close separator indexindexWHEN id#{item.id,jdbcTypeBIGINT} THEN #{item.displayOrder,jdbcTypeTINYINT}/foreach/ifENDWHEREif testidList ! nullid INforeach collectionidList open( itemitem close) separator, indexindex#{item}/foreach/if/update