首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在where子句中使用max?

如何在where子句中使用max?
EN

Stack Overflow用户
提问于 2019-03-26 06:54:59
回答 4查看 62关注 0票数 -1

在我们的数据库中,每个客户端最多可以有3个电话号码,每个电话号码都与一个ID_phone_number、一个ID_type_phone和id_person相关联。

所以我需要做一个通用的选择,它返回的电话号码的id_type_phone = '2‘,并具有与此id_person相关的较高的id_phone_number。

这个select需要对我的整个数据库起作用,所以我不能在上面指定id_person

我有:

代码语言:javascript
复制
SELECT 
  (SELECT collun1.phone WHERE collun1.ID_type_phone = '2')
FROM collun1
WHERE id_person = 4

我想要像这样的东西

代码语言:javascript
复制
SELECT 
  (SELECT collun1.phone WHERE collun1.ID_type_phone = '2' and max(id_phone_number)
FROM collun1
EN

回答 4

Stack Overflow用户

发布于 2019-03-26 07:15:39

可以将SQL Server的Rank函数与PARTITION和ORDER BY一起使用

就像这样

代码语言:javascript
复制
Select * from (
    Select  RANK() OVER (
        PARTITION BY id_person 
        ORDER BY id_phone_number desc) AS phoneRank
        ,*
    from    collun1
    WHERE   collun1.ID_type_phone = '2') as tempSub
where phoneRank = 1
票数 1
EN

Stack Overflow用户

发布于 2019-03-26 07:00:52

使用以下语法:

代码语言:javascript
复制
SELECT id_person, phone 
FROM collun1 
WHERE ID_type_phone = '2' AND id_phone_number = (SELECT MAX(id_phone_number) FROM collun1 c WHERE c.id_person = collun1.id_person)
票数 0
EN

Stack Overflow用户

发布于 2019-03-26 07:03:19

GROUP BY可能会更快(取决于您的数据):

代码语言:javascript
复制
SELECT id_person, MAX(ID_phone_number) 
FROM collun1 
WHERE ID_type_phone = '2' 
GROUP BY id_person
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55347533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档