2016-03-25 68 views
2

我有一个SQL表(tblRequests)与不同用户提交的请求列表。该字段是:使用另一个表中的值对SQL表进行排序

RequestID, UserID, DateSubmitted, Status 

我有另一个表(tblImportantUsers)与重要用户的列表。该表只有一个UserID字段。

我想显示重要用户提交的请求在上面。我可以使用以下查询来实现这一点:

select r.RequestID, r.UserID, r.DateSubmitted, r.Status 
from tblRequests r left join tblImportantUsers u on r.UserID = u.UserID 
order by u.UserID desc, r.DateSubmitted desc 

但是,我只希望重要用户的活动请求显示在顶部。不活动的请求应根据DateSubmitted字段进行排序。我甚至尝试过UNION方法,但它也不起作用。

有什么办法可以实现这一点,而不需要在我的请求表中添加任何额外的列?

感谢

数据在tblRequests:

RequestID UserID DateSubmitted Status 
1   205  3/12/2016  0 
2   208  3/16/2016  1 
3   203  3/17/2016  0 
4   241  3/17/2016  1 
5   210  3/18/2016  0 
6   205  3/18/2016  1 
7   203  3/19/2016  1 
8   241  3/19/2016  1 

数据在tblImportantUsers:

UserID 
205 
203 

要求的结果:

RequestID UserID DateSubmitted Status 
7   203  3/19/2016  1 
6   205  3/18/2016  1 
8   241  3/19/2016  1 
5   210  3/18/2016  0 
4   241  3/17/2016  1 
3   203  3/17/2016  0 
2   208  3/16/2016  1 
1   205  3/12/2016  0 
+0

是'status'如果请求是活动还是不什么显示器? –

+0

是的,活动请求有状态1,非活动请求有0 –

+0

样本数据和期望的输出将帮助我们了解您正在尝试做什么 –

回答

1

试试这个,它适用于红移:

select 
     a.requestid 
    , a.userid 
    , a.datesubmitted 
    , a.status 
    from 
    tblrequests a 
    left join tblimportantusers b on (a.userid = b.userid) 
    order by 
    (case when status = 1 and b.userid is not null then 1 else 0 end) desc 
    , date submitted desc 
    , userid desc 
+0

这是完美的。它正是我想要的,我不需要使用联合。谢谢 –

0

这应做到:

select RequestID, UserID, DateSubmitted, Status 
from (
select r.RequestID, r.UserID, r.DateSubmitted, r.Status, 1 as ind 
from tblRequests r inner join tblImportantUsers u on r.UserID = u.UserID 
order by r.status desc, r.DateSubmitted desc 

union all 

select r.RequestID, r.UserID, r.DateSubmitted, r.Status, 0 as ind 
from tblRequests r left outer join tblImportantUsers u on r.UserID = u.UserID 
where u.UserID is null 
order by r.status desc, r.DateSubmitted desc) 

order by ind desc, DateSubmitted desc, userID 

做一个内连接和左外连接

+0

哦,是的,这是我的错误,我实际上使用左连接。 –

+0

@ S.Arzoo,如果这能解决您的问题,请随时接受。 –

+0

其实它没有,当我用左连接运行查询时,它没有显示重要用户在顶部的请求 –

相关问题