如何从选择查询中首先显示特定行

时间:2015-03-31 10:48:26

标签: sql-server sql-server-2008

我的查询结果如下

name   id

a   2
b   3
c   7
h   9
i   1

我需要显示如下结果 预期结果

name    id
c   7
a   2
b   3
h   9
i   1

id字段是Primarykey,因此我希望显示此

到目前为止,我尝试过订购方式,但它只提供订购选项,例如体面或者提升。

请帮我这样做

我做过类似下面的事情

create procedure proc1
@id int;
begin 

select name,id from tablname order by id 

end

我也曾尝试过,但也失败了。请帮我解决这个问题

2 个答案:

答案 0 :(得分:2)

试试这个:

CREATE PROCEDURE proc1 (@id int)
AS

SELECT name,id 
FROM tablname 
ORDER BY CASE WHEN id=@id THEN 0 ELSE id END

注意:假设您的id列的值始终大于0,这将有效。

答案 1 :(得分:0)

我试过这个,它确切地给出了你所需的输出。

declare @name varchar(10)
set @name = 'c'

create table #temp (id int ,name varchar(10))

insert into #temp(id,name) values(1,'i')
insert into #temp(id,name) values(2,'a')
insert into #temp(id,name) values(3,'b')
insert into #temp(id,name) values(7,'c')
insert into #temp(id,name) values(9,'h')

Select name,id from #temp ORDER BY CASE WHEN name=@name THEN '' ELSE name END

Drop table #temp