最近帮别人做搜索排名,交了钱的排在前面,交了钱的人的数据都存在第二张表中,始果他交了钱,并且现在的搜时的时间在第二张表的StartTime ,EndTime之间,哪么哪些符合要求的就 随机排在前面,没有交钱的就按添加的时间排在后面,这个SQL语名要怎么写,写得有乱,不知大家明白我的意思没有,为这个问题我的头确实有点大了~·    
     比方说我有二个表 
     一张表 UserBase    字段 ID ,UserName ,AddTime
     一张 PaiMing       字段 ID ,UserId,  StartTime ,EndTime;
请各位大侠们把这个完整的SQL写下,在这里先谢过各位了~
     

解决方案 »

  1.   

    declare @userbase table (id int,username varchar(10),addtime datetime)
    insert into @userbase select 1,'王','2008-01-01'
    insert into @userbase select 2,'李','2008-01-02'
    insert into @userbase select 3,'张','2008-01-03'
    declare @paiming table (id int,userid int,starttime datetime,endtime datetime)
    insert into @paiming select 1,1,'2008-01-01','2008-01-10'
    insert into @paiming select 2,2,'2008-01-01','2008-01-05'select * from @userbase a left join  @paiming b
    on a.id=b.userid 
    --可以加where 条件
    order by case when b.id is null then 1 else 0 end,newid()
    --1结果
    id username addtime id userid starttime endtime
    2 李 2008-01-02 00:00:00.000 2 2 2008-01-01 00:00:00.000 2008-01-05 00:00:00.000
    1 王 2008-01-01 00:00:00.000 1 1 2008-01-01 00:00:00.000 2008-01-10 00:00:00.000
    3 张 2008-01-03 00:00:00.000 NULL NULL NULL NULL
    --2结果id username addtime id userid starttime endtime
    1 王 2008-01-01 00:00:00.000 1 1 2008-01-01 00:00:00.000 2008-01-10 00:00:00.000
    2 李 2008-01-02 00:00:00.000 2 2 2008-01-01 00:00:00.000 2008-01-05 00:00:00.000
    3 张 2008-01-03 00:00:00.000 NULL NULL NULL NULL