SQL:移动记录同意两个条件

时间:2013-09-09 14:24:54

标签: sql sql-server-2008

有下表

  CompanyID   CompanyName
1 333         Name1
2 333         Name2
3 123         Name1
4 333         Name1
5 444         Name1
6 444         Name1

我需要所有公司CompanyID = 333 OR CompanyName = Name1,我想以一种方式编写查询,如果我有的话公司同意所有CompanyID(333)和CompanyName(Name1),然后它们应该在结果表的顶部。除此之外,可能不需要其他订购:

  CompanyID   CompanyName
1 333         Name1
2 333         Name1
3 333         Name2
4 123         Name1
5 444         Name1
6 444         Name1

我怎样才能做到这一点?我正在使用SQL Server 2008 RD。 谢谢!

1 个答案:

答案 0 :(得分:5)

这是一个order by问题。您需要将双重匹配放在列表顶部:

select *
from t
where CompanyId = 333 or CompanyName = 'Name1'
order by (case when companyId = 333 and CompanyName = 'Name1' then 1
               else 0
          end) desc