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

Ant*_*lev 1 sql sql-server-2008

有下表

  CompanyID   CompanyName
1 333         Name1
2 333         Name2
3 123         Name1
4 333         Name1
5 444         Name1
6 444         Name1
Run Code Online (Sandbox Code Playgroud)

我需要所有公司都有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
Run Code Online (Sandbox Code Playgroud)

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

Gor*_*off 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
Run Code Online (Sandbox Code Playgroud)