日期:2014-05-18  浏览次数:20473 次

请大家帮忙解答这个关于order by 丢失数据的问题
以下用的是pubs..employee   表:

declare   @str   varchar(1000)
set   @str   =   ' '
select   @str   =   @str   +   fname   +   '   -   '   from   employee   where   job_id   =   5
order   by     hire_date
print   @str
===========================
结果为:Rita   -  


declare   @str   varchar(1000)
set   @str   =   ' '
select   @str   =   @str   +   fname   +   '   -   '   from   employee   where   job_id   =   5
--order   by     hire_date
print   @str
===========================
结果为:Paul   -   Carlos   -   Janine   -   Laurence   -   Rita   -   Sven   -   Maria   -  


select   *   from   employee   where   job_id   =   5
===========================
这条SQL明明有7条记录,为什么当我用变量累加的时候,当我用order   by的时候会丢失数据,不明白其中的道理,希望有高手解答,也提醒大家有类似的情况要多加注意,因为这个问题让我调了一下午都不知道问题出现在哪

------解决方案--------------------
在我的电脑上显示的结果都一样啊!
------解决方案--------------------
怎麼我得到的結果不一樣?

Use Pubs
GO
declare @str varchar(1000)
set @str = ' '
select @str = @str + fname + ' - ' from employee where job_id = 5
order by hire_date
print @str


set @str = ' '
select @str = @str + fname + ' - ' from employee where job_id = 5
--order by hire_date
print @str
GO
--Result
/*
Maria - Carlos - Laurence - Sven - Janine - Paul - Rita -
Paul - Carlos - Janine - Laurence - Rita - Sven - Maria -
*/
------解决方案--------------------
我这里也是一样的。。。
------解决方案--------------------
没碰过这样的情况,按照理论不会出这样的情况,只有次序先后不一样的情况。
------解决方案--------------------
他的意思是加了order by 数据就变成只有一个了。。。

---
===========================
结果为:Rita -
------解决方案--------------------
还真的第1次发现这样的情况,呵呵
看看
------解决方案--------------------
我就是將兩種情況放在一起測試,所以就一個是注釋掉的,一個沒有注釋掉撒。
------解决方案--------------------
不过我的执行后,结果一样
------解决方案--------------------
结果一样,

是不是没有打patch.
------解决方案--------------------
邹老大,还是厉害!早就知道这问题。

------解决方案--------------------
你说的是那个patch
Microsoft SQL Server 2000 - 8.00.760 (Intel X86) Dec 17 2002 14:22:05 Copyright (c) 1988-2003 Microsoft Corporation Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 2)

------解决方案--------------------
sp4
------解决方案--------------------
晕,打了sp4就不对了?那我不打了
------解决方案--------------------
:)
------解决方案--------------------