作者ThreeDay0905 (三天)
看板Database
标题Re: [SQL ] Order By的语法
时间Wed Sep 22 17:10:15 2010
※ 引述《testcrack (testcrack)》之铭言:
: 资料来源是某设备产生的LOG档(Text档)
: 因为记录档的资料是一直append进来的,所以最新的资料是放在最後面
: 然而资料表中并无序号栏位
: 如果直接Select这个资料表,显示的顺序的确都会跟来源一样
: 但是若是想要反序显示,又没有一个栏位可以来order by
: 所以有什麽方法可以降幂显示?
假如是MSSQL的话,有个函数叫做ROW_NUMBER可以产生连续编号
使用上类似 ROW_NUMBER() OVER(ORDER BY [Column]
这样就会针对该Column产生自动且连续的编号
但因您的需求并没有一个可以排序的栏位,
所以可以随便指定一个函式给他,只要会产生固定值就好
这样他就会依照你直接下SELECT的资料顺序排序
再使用CTE进行反向排序即可
T-SQL类似
==============================================================
;WITH t as
(
SELECT *, ROW_NUMBER() OVER (ORDER BY HOST_ID()) as [index]
FROM TableA
)
SELECT * FROM t ORDER BY [index] DESC
==============================================================
为了避免误解,我在ORDER BY使用HOST_ID()只是因为顺手用而已
事实上那个地方随便放一个会产生固定回传值的变数或着函数都可以
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.249.135.130