mysql查询新列中每一行的最大值函数

disbfnqx  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(360)

我想用每行中另一列的最大值创建一个新列,但是当我使用 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
esbemjvw

esbemjvw1#

我知道您希望新列的最大值为 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

相关问题