用过order by newid()吧? 发现问题了吗?谁给解释一下。
declare @tb table (aa int,bb char(1))
insert @tb values(1,'A')
insert @tb values(1,'B')
insert @tb values(1,'C')
insert @tb values(1,'D')
insert @tb values(2,'A')
insert @tb values(2,'B')
insert @tb values(2,'C')
insert @tb values(2,'D')
insert @tb values(3,'A')
insert @tb values(3,'B')
insert @tb values(3,'C')
insert @tb values(3,'D')
-- 执行语句1 ,多次执行都没问题
select top 1 * from @tb order by newid()
-- 执行语句2 ,多次执行都没问题
select * from @tb a
where bb in (select top 1 bb from @tb
where aa = a.aa)
-- 执行语句3 ,多执行几次,问题出来了
select * from @tb a
where bb in (select top 1 bb from @tb
where aa = a.aa order by newid())
-- 谁给解释一下