针对新列的每一行的MySQL查询最大功能

问题描述 投票:0回答:1

我想用每行中另一列的最大值创建一个新列,但是当我使用MAX()函数时,它仅返回一行。

我希望每行具有相同的值。从没有MAX功能的第一个代码中,我得到533行,然后当我使用MAX()时,我仅得到一行。

SELECT
    ap.id,
    ap.name,
    apc.closing_prob_c
FROM a_assigned_prospect ap
LEFT JOIN a_assigned_prospect_cstm apc ON apc.id_c=ap.id
SELECT
    ap.id,
    ap.name,
    apc.closing_prob_c,
    MAX(apc.closing_prob_c)
FROM a_assigned_prospect ap
LEFT JOIN a_assigned_prospect_cstm apc ON apc.id_c=ap.id
mysql sql join max window-functions
1个回答
0
投票

我知道您希望新列在[[整个结果集上具有apc.closing_prob_c的最大值,同时仍返回原始的533行。

如果您运行的是MySQL 8.0,则直接使用window max:

select ap.id, ap.name, apc.closing_prob_c, max(apc.closing_prob_c) over() max_closing_prob_c from a_assigned_prospect ap left join a_assigned_prospect_cstm apc on apc.id_c = ap.id

在早期版本中,通常会使用子查询:

select ap.id, ap.name, apc.closing_prob_c, ( select max(apc1.closing_prob_c) from a_assigned_prospect_cstm apc1 where exists ( select 1 from a_assigned_prospect ap1 where ap1.id = apc1.id_c ) ) max_closing_prob_c from a_assigned_prospect ap left join a_assigned_prospect_cstm apc on apc.id_c=ap.id

© www.soinside.com 2019 - 2024. All rights reserved.