如何数据库表中原有的记录 倒序 显示出来...
ps: 数据库表中字段 为 id 和name 两个字段均可以为空。
不要告诉我order by 方法。。。因为有的记录id 和name 均为空
只想实现表中现有记录 倒序显示出来!
拜谢!
[解决办法]
好吧,我闭嘴。
[解决办法]
if object_id('[TB]') is not null drop table [TB]
go
create table [TB] (col1 int,col2 nvarchar(4))
insert into [TB]
select null,null union all
select null,null union all
select null,null union all
select null,null union all
select null,null union all
select null,null union all
select 17,'张三' union all
select 15,'李四' union all
select 13,'白华' union all
select 11,'萍乡' union all
select 9,'武汉' union all
select 7,'南昌'
select * from [TB]
SELECT col1,col2 FROM dbo.TB
ORDER BY ISNULL(col1,9999) --给个值行不?
/*
col1col2
7南昌
9武汉
11萍乡
13白华
15李四
17张三
NULLNULL
NULLNULL
NULLNULL
NULLNULL
NULLNULL
NULLNULL*/
最好的方法 自己加个标识列 什么都解决了
[解决办法]
select * from (select row_number() over(order by getdate()) as rid,* from syscolumns)t
order by rid desc
--如果不要NULL值 加上where col is not null
select * from (select row_number() over(order by id) as rid,* from person)t
order by rid desc
--对于over(order by getdate())这样的排序,当SQL的执行计划改变时,可能得到的结果会有变化.
--所以如果想排序,必需指定排序值。对于包含NULL值的字段,必需指定NULL的值后再排序
CREATE TABLE #OrderBy
(
id INT NOT NULL,
NAME NVARCHAR(10)
)
INSERT #OrderBy
(id, NAME)
SELECT 2, NULL UNION ALL
SELECT 1, 'wyl'
--#1.无索引
SELECT
rid = ROW_NUMBER() OVER(ORDER BY GETDATE()),
*
FROM #OrderBy
ORDER BY rid
--#2.有聚集索引
CREATE CLUSTERED INDEX IX_test ON #OrderBy
(
id
)
GO
--再次运行,结果与#1不一样!
SELECT
rid = ROW_NUMBER() OVER(ORDER BY GETDATE()),
*
FROM #OrderBy
ORDER BY rid