如果数据库表有user
id  name  password
1   wang  wang    
2   zhang zhang
3   yang  yang
我想查询这张表,并且把传入的特定条件的行放查询出来的第一行,比如把name=zhang的那行查询出来放在第一行,
其他的行顺序随便,查出来是
2   zhang zhang
1   wang  wang
3   yang  yang
请问高手这个查询的sql语句怎么实现啊

解决方案 »

  1.   

    order by case when name='zhang' then 0 else 1 end
      

  2.   

    ORDER BY 
        CASE WHEN name='zhang' THEN 0 ELSE 1 END,
        ID
      

  3.   

    select *
    fom tb
    where name = zhang
    union all
    select * 
    from tb
    where name <> zhang
      

  4.   

    order by case when name='zhang' then 1 else 2 end把'zhang'换成变量即可
      

  5.   

    select *
    fom tb
    where name = zhang
    union all
    select * 
    from tb
    where name <> zhang
      

  6.   

    select * from tb
    order by charindex('wang',[name]) desc
      

  7.   

    select * from user
    where name = 'zhang'
    union all
    select * from user
    where name <> 'zhang'
      

  8.   


    /*
    如果数据库表有user
    id  name  password
    1   wang  wang
    2   zhang zhang
    3   yang  yang
    我想查询这张表,并且把传入的特定条件的行放查询出来的第一行,比如把name=zhang的那行查询出来放在第一行,
    其他的行顺序随便,查出来是
    2   zhang zhang
    1   wang  wang
    3   yang  yang
    请问高手这个查询的sql语句怎么实现啊
    */
        
    select * 
    from (
    select 1 id,'wang' [name],'wang' password union
    select 2,'zhang','zhang' union
    select 3,'yang','yang') b
    order by case when [name]='wang' then 1 end
    id name password
    2 zhang zhang
    3 yang yang
    1 wang wang
      

  9.   

    order by case when name='zhang' then 0 else 1 end
      

  10.   

    order by case when name='zhang' then 0 else 1 end