Mysql查询新列每一行的max函数
Posted
技术标签:
【中文标题】Mysql查询新列每一行的max函数【英文标题】:Mysql query max function for each row of a new column 【发布时间】: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行?
是的,我想要那个
您应该提供样本数据和期望的结果。
【参考方案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...谢谢。以上是关于Mysql查询新列每一行的max函数的主要内容,如果未能解决你的问题,请参考以下文章