如果电话号码与提供的电话号码匹配,我需要一个 SQL 查询来返回一个电话号码,或者返回按最近排序的电话号码列表的第一个值。
假设客户有 3 个电话号码:
ID ClientID Number Order
1 1 07123123123 2
2 1 07321321321 3
3 1 07111111111 1
如果查询中提供的电话号码是 07321321321,则它将返回 07321321321。如果提供的电话号码与任何数字都不匹配或为黑色,则它将返回前 1 个号码,按顺序列排序。
有没有明显的方法可以做到这一点,或者让以下 SQL 工作?
SELECT TOP 1 Number
FROM ClientPhoneNumbers cpn
WHERE cpn.ClientId = clientlist.ClientId
ORDER BY (Number = <phonenumbersupplied>), cpn.[Order]) AS [PhoneNumber]
使用 SQL 服务器
谢谢!
我想我会这样做:
select top (1) number
from ((select @number, 1 as ord
from ClientPhoneNumbers
where number = @number
) union all
(select top (1) number, 2
from ClientPhoneNumbers
order by order
)
) cp
order by ord;
你也可以这样做:
select top (1) cpn.number
from ClientPhoneNumbers cpn
order by (case when cpn.number = @number then 1 else 2 end),
cpn.order;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句