请大家帮忙解答这个关于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就不对了?那我不打了
------解决方案--------------------:)
------解决方案--------------------