【问题标题】:Mysql query max function for each row of a new columnMysql查询新列每一行的max函数
【发布时间】:2020-05-29 22:16:32
【问题描述】:

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

【问题讨论】:

  • 所以您希望新列在整个表上具有最大值apc.closing_prob_c,同时仍返回533行?
  • 是的,我想要那个
  • 您应该提供样本数据和期望的结果。

标签: mysql sql join max window-functions


【解决方案1】:

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

如果您运行的是 MySQL 8.0,那么直接使用最大窗口即可:

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

【讨论】:

  • 欢迎@DanielMejia。如果我的回答正确地回答了您的问题,请点击复选标志accept it...谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-18
相关资源
最近更新 更多