1

有下表

  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。谢谢!

4

1 回答 1

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
于 2013-09-09T14:27:51.737 回答