谁能告诉我,Sql Server 是如何执行的,Sql高手请进.(100分)

  • 主题发起人 主题发起人 wang2855
  • 开始时间 开始时间
W

wang2855

Unregistered / Unconfirmed
GUEST, unregistred user!
sql="select top n * from tablename order by newid()"
是随机提取tablename中的数据
请高手告诉我为什么我每次用查出的newid 作为字符替换newid()却显示的数据的顺序是固定的前n条?
谁能告诉我,Sql Server 是如何执行的,
select top n * from tablename order by newid(),
我原先以为是先生成newid(),然后在执行select 语句,但是比如
newid='DC750F49-308E-4955-AA2F-1E032A1A30C8'
我用上面的字符替换,sql变成:
select top n * from tablename order by 'DC750F49-308E-4955-AA2F-1E032A1A30C8'
结果查出的数据是固定的,很明显我的理解不对。
 
还是先生成 一个随机的关键字的序列,如有自增量,可以先生成随机数据列如:sqlid='1,2,6,78';
然后用sqlstr := 'select * from table where id in ('+sqlid+')';
 
就是,先生成随机的关键字的序列,然后再写吗!
 
NEWID()的返回值为uniqueidentifier类型。而表中的数据可以通过与uniqueidentifier类型的值比较得到新的序列。如果用'DC750F49-308E-4955-AA2F-1E032A1A30C8'代替,就相当于按照指定列排序,而该字符串不是列名,无意义。
 
建议查一下uniqueidentifier类型的相关知识
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
843
import
I
S
回复
0
查看
928
SUNSTONE的Delphi笔记
S
后退
顶部