declare @sql varchar(4000) declare @order varchar(100)set @sql = 'select * from tb' set @order = 'id desc'if isnull(@order,'') <> '' set @order = ' order by ' + @order else set @order = ''exec(@sql+@order)
order by 1 表示是按第1列排序。 你要是不想排序: order by getdate()
declare @t table (id int) insert into @t select 3 union all select 1 union all select 2select * from @t order by 1 /* id ----------- 1 2 3 */select * from @t order by getdate() /* id ----------- 3 1 2 */可以控制不拼接order,也可以用getdate()
order by 1不等同于不排序,是按第1列排序
order by 1等同于按第一列排的
select 1, blah1, blah2 from xxx where yyy order by 1
order by (select 1) 这个也不排序
order by case when 1=1 then 1 else 2 end 这个也不排序吧
这个好象就是order by 1吧
在oracle 里写Select * From table1 Order By (Select 1 From dual) 发现还是跟不带order by的语句结果有区别 sql server还没试,可能sql server可以吧
order by 1的1是有特别的含义:即列号 order by (结果是常量的运算),则不是列号了
declare @sql varchar(4000)
declare @order varchar(100)set @sql = 'select * from tb'
set @order = 'id desc'if isnull(@order,'') <> ''
set @order = ' order by ' + @order
else
set @order = ''exec(@sql+@order)
你要是不想排序:
order by getdate()
declare @t table (id int)
insert into @t
select 3 union all
select 1 union all
select 2select * from @t order by 1
/*
id
-----------
1
2
3
*/select * from @t order by getdate()
/*
id
-----------
3
1
2
*/可以控制不拼接order,也可以用getdate()
1,
blah1,
blah2
from
xxx
where
yyy
order by 1
这个也不排序吧
发现还是跟不带order by的语句结果有区别
sql server还没试,可能sql server可以吧
order by 1的1是有特别的含义:即列号
order by (结果是常量的运算),则不是列号了