问题在于返回的这五条记录不是按照T来排序的??SELECT * FROM (SELECT TOP 5 A,B FROM T1 WHERE C=1 ORDER BY T DESC UNION SELECT TOP 5 A,B FROM T1 WHERE C = 0 ORDER BY T DESC) DERIVEDTBL ORDER BY C DESC,T DESC
??
??
解决方案 »
- 老师们来看看,这个联合查询怎么查都查不出来。2个表,其中一个表是二级栏目的分类
- 取每题的前27%个人的分数和或后27%个人的分数和的SQL语句
- 这个如何用SQL写
- 如何删除重复记录?(明天要用特急)
- 数据统计 用统计表还是不用
- 3表联合统计,有更简单的方法吗?
- what is wrong in this sql ??????
- 哪里有SQL SERVER2000中文版电子书籍下载??
- 请问各位大侠该功能用SQL语句如何实现(数据库为ase)?急(在线等待)
- 您好,关于在SQL SERVER上的management->agent->jobs上执行EXE文件的问题?
- 使用查询分析器的存储过程调试出问题了
- 有没有不通过查询分析器,自动执行sql脚本
order by C DESC,T DESC
DECLARE @I INT
SELECT @I = 1INSERT INTO @TB (C,T) SELECT RAND(CHECKSUM(NEWID()))*10,CAST( RAND(CHECKSUM(NEWID()))*10000 AS DATETIME)FROM MASTER..SYSOBJECTS SELECT C,MAX(T) MAX,MIN(T) MIN FROM @TB WHERE C IN (0,1) GROUP BY C/**********************
语句1 原始语句 结果错误
**********************/
SELECT '' '语句1',* FROM (
SELECT TOP 5 C,T FROM @TB WHERE C=0 ORDER BY T DESC
UNION
SELECT TOP 5 C,T FROM @TB WHERE C=1 ORDER BY T DESC
) TB ORDER BY C ,T DESC/**********************
语句2 改进后的语句1 结果正确**********************/
SELECT '' '语句2',* FROM(
SELECT * FROM(
SELECT TOP 5 C,T FROM @TB WHERE C=0 ORDER BY T DESC )T1
UNION ALL
SELECT * FROM(
SELECT TOP 5 C,T FROM @TB WHERE C=1 ORDER BY T DESC )T1
)TB ORDER BY C ,T DESC/**********************
语句3 我给你的语句 结果正确 我做了点修改
**********************/
select '' '语句3',* from @TB a where 5>ISNULL((select count(1) from @TB b where b.c= a.c and b.t > a.t group by C),0)
AND C IN (0,1)
order by C ,T DESC
/*****************************************
在查询分析器中打开“显示执行计划”并执行该脚本。
然后查看执行计划,你会发现语句1和语句2最大的区别是---
语句1只是在外部作了一次ORDER BY,并没有在内部执行ORDER BY 操作。
所以结果差强人意。看了就知道为什么了
******************************************/
这本身就是个病句,不会执行的吧