关于sql语句的执行顺序

coderee 2009-02-18 10:33:35
adoquery1.close;
adoquery1.sql.clear;
adoquery1.SQL.Add('update a set sl=50 ');
adoquery1.SQL.Add('update a set sl=100 where sl=50');
adoquery1.execsql;
请问该语句最后的数量字段的值是多少?
...全文
127 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
虎滴小猪猪 2009-02-18
  • 打赏
  • 举报
回复

100
willflyz 2009-02-18
  • 打赏
  • 举报
回复
有哪种语言会从下往上执行的吗?没有吧.
bdmh 2009-02-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 coderee 的回复:]
引用 6 楼 starluck 的回复:


都是由上而下的。不過在查詢分析器裏不要選定某一行,不然只執行選定行。

在查询分析器里分别同时执行下面两种情况,结果分别是多少
1、update a set sl=50
update a set sl=100 where sl='50'

2、update a set sl=50
update a set sl=100
[/Quote]

结果一样
coderee 2009-02-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 starluck 的回复:]


都是由上而下的。不過在查詢分析器裏不要選定某一行,不然只執行選定行。
[/Quote]
在查询分析器里分别同时执行下面两种情况,结果分别是多少
1、update a set sl=50
update a set sl=100 where sl='50'

2、update a set sl=50
update a set sl=100
starluck 2009-02-18
  • 打赏
  • 举报
回复


都是由上而下的。不過在查詢分析器裏不要選定某一行,不然只執行選定行。
coderee 2009-02-18
  • 打赏
  • 举报
回复
如果在查询分析器里同时执行呢?
ddgg18 2009-02-18
  • 打赏
  • 举报
回复
100
bdmh 2009-02-18
  • 打赏
  • 举报
回复
adoquery1.sql.clear;
adoquery1.SQL.Add('update a set sl=50 '); //所有记录的sl字段都为50
adoquery1.SQL.Add('update a set sl=100 where sl=50'); //sl为50的更新为100,
adoquery1.execsql;

所以最终所有记录的sl字段为100
de410 2009-02-18
  • 打赏
  • 举报
回复
是按顺序执行的,是100~~
starluck 2009-02-18
  • 打赏
  • 举报
回复
100
coderee 2009-02-18
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 starluck 的回复:]
引用 7 楼 coderee 的回复:
引用 6 楼 starluck 的回复:


都是由上而下的。不過在查詢分析器裏不要選定某一行,不然只執行選定行。

在查询分析器里分别同时执行下面两种情况,结果分别是多少
1、update a set sl=50
update a set sl=100 where sl='50'

2、update a set sl=50
update a set sl=100


這個不知道。MSSQL下都能執行,但1裏面只對S1 = 50 的操作 2裏面都直接對表的所有S1字段更新成1…
[/Quote]
我试过了,这两种情况的结果都是100,但听说如果选定几行同时执行容易出错。
coderee 2009-02-18
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 frankie_24 的回复:]
此问题的目的何在?
[/Quote]
兄弟,你看不出来吗?sql语句的执行顺序。
adoquery1.close;
adoquery1.sql.clear;
adoquery1.SQL.Add('update a set sl=50 ');
adoquery1.SQL.Add('update a set sl=100 where sl=50');
adoquery1.execsql;

adoquery1.close;
adoquery1.sql.clear;
adoquery1.SQL.Add('update a set sl=50 ');
adoquery1.execsql;
adoquery1.close;
adoquery1.sql.clear;
adoquery1.SQL.Add('update a set sl=100 where sl=50');
adoquery1.execsql;
的结果一样吗?
同时执行和先后分别执行下列两个语句一样吗?问题说的够清楚了,怎么还看不明白呢?
update a set sl=50
update a set sl=100 where sl='50'

starluck 2009-02-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 coderee 的回复:]
引用 6 楼 starluck 的回复:


都是由上而下的。不過在查詢分析器裏不要選定某一行,不然只執行選定行。

在查询分析器里分别同时执行下面两种情况,结果分别是多少
1、update a set sl=50
update a set sl=100 where sl='50'

2、update a set sl=50
update a set sl=100
[/Quote]

這個不知道。MSSQL下都能執行,但1裏面只對S1 = 50 的操作 2裏面都直接對表的所有S1字段更新成100

其它數據庫第一個裏面的第二條有可能錯,也有可能反過來其它都錯。
frankie_24 2009-02-18
  • 打赏
  • 举报
回复
此问题的目的何在?

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧