柳三公子

卑鄙是卑鄙者的通行证, 高尚是高尚者的墓志铭

导航

有些情况下,我们需要数据添加一个全局唯一字段,可以想到的一个方法,是在字段列表中使用newid()函数,如下
select newid() as guid, col1, col2, col3
from table1
where ......
但是这样的方法有很大的问题,就是选出来的数据,每一行的guid字段都是不同的,因为SQL会针对每行数据调用newid()函数。
那么如何让选出的所有行,都拥有相同的uid呢,其实很简单,利用inner join
SELECT g.guid, a.col1, a.col2, a.col3
FROM table1 a inner JOIN (SELECT TOP 1 newid() AS guid) g ON 1 = 1
这样,每行数据都添加了一个guid字段,并且每行的guid都相同