--以下仅为我自己想法,不知道你具体的需求.
 1.按发布时间排序 
select * from tb order by infodate  -- 升序
select * from tb order by infodate desc -- 降序 2.按发布时间排序后在按是否是会员排序,会员在前,非会员在后 
--假设1为会员,0为非会员。
select * from tb order by infodate , membership desc 3.按会员排序后按会员点数排序,高的在前,底的在后 
select * from tb order by membership desc , membershippoint desc 4.如果会员点数相同,按注册时间排序 
select * from tb order by membershippoint , createdate
select * from tb order by membershippoint , createdate desc
select * from tb order by membershippoint desc, createdate 
select * from tb order by membershippoint desc, createdate desc
 5,非会员按注册时间排序 
select * from tb where membership = 0 order by createdate
select * from tb where membership = 0 order by createdate desc

解决方案 »

  1.   

    SELECT * FROM 
    TABLENAME
    ORDER BY infodate desc,membership ,membershippoint desc,createdate 
      

  2.   

    你是说把5个条件写到一个SQL中?
      

  3.   

    sql是支持多关键字排序的,1楼的老兄其实已经把问题回答出来了,直接把order by后面的东西用逗号(,)分隔依次摆出来就行了。
    就像这样的:select * from tablename where column1 asc,column2 desc,column3 desc
      

  4.   

    Create Table tb1
    (id int primary key,--(id) 
    membership bit,     --(是否是会员) 
    membershippoint int, --(会员点数) 
    createdate datetime,          -- (注册日期) 
    infodate datetime            -- (信息发布时间) 
    )
    --Drop Table tb1
    Insert tb1 Values(1,1,45,'1999-01-20','2005-02-25')
    Insert tb1 Values(2,1,45,'1999-01-20','2004-02-25')
    Insert tb1 Values(3,1,45,'1999-01-20','2003-02-25')
    Insert tb1 Values(4,0,45,'1999-03-20','2005-02-25')
    Insert tb1 Values(5,1,45,'1999-02-20','2005-05-25')
    Insert tb1 Values(10,0,46,'1999-01-20','2005-02-25')
    Insert tb1 Values(11,0,47,'1999-04-20','2005-06-25')select * from tb1
    order by infodate ,membership desc,membershippoint desc,createdate