已掉线,重新登录

首页 > 绿虎论坛 > 杂类 > 超级灌水 (发帖)

标题: 记录一次数据库中一直误会的坑 SET更新多条数据问题

作者: @Ta

时间: 2019-11-26发布,2019-11-26修改

点击: 2144

6f12b0cc9d8955a5f7a3faf8cb27a51814360.png
以上表为例,执行SQL
UPDATE student 
SET no1 = 5,
no2 = no1 + 1 
WHERE
	SId = '01'

一眼扫过,脱口而出 Sid为01的学生no1,no2成了5,3

但实际,这跟代码中变量差不多,前期设置no1为5了,no2结果是6!

以前想数据执行完才会SET更新,因此no1在当前语句保持之前值,但实际跟我想的有点不同啊

[隐藏样式|查看源码]


『回复列表(8|显示机器人聊天)』

1. 不知道Oracle中是不是这样,待测试
(/@Ta/2019-11-26 17:17//)

2. default.jpg
(/@Ta/2019-11-26 17:54//)

5.

(/@Ta/2019-11-26 20:18//)

6.

@hik,你把两个赋值表达式换个顺序不就可以了

UPDATE student
SET 
    no2 = no1 + 1,
    no1 = 5
WHERE
    SId = '01'
(/@Ta/2019-11-26 20:20//)

7. @老虎会游泳,大坑,Oracle上这样写不行,no2还是会成了5,3
(/@Ta/2019-12-18 18:19//)

8. 看球不懂。
(/@Ta/2019-12-18 18:48//)

9.

@hik,5,3不就是你想要的结果吗?你主楼说5,6不正确。

(/@Ta/2019-12-18 19:13//)

10. @老虎会游泳,第一张图MySQL中执行上述的SQL的结果,第二张图Oracle中的结果,原来,Oracle不支持Mysql那种方式。7楼说错了,应该是5、2,因为它no1还是数据库中的1,而不是赋值后的no1
ad4e02914bfdb3b4ce287e39bf802eb29625.png

a75995025a46d76d30b88acbbf89a976192611.png
(/@Ta/2019-12-19 10:00//)

回复需要登录

8月2日 18:21 星期六

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1