【问题标题】:Flag the row with the max value in field B based on name field in Field A根据字段 A 中的名称字段标记字段 B 中具有最大值的行
【发布时间】:2015-10-08 13:16:23
【问题描述】:

我可以在给定的一组同名记录中找到具有最大值的行,使用

Select Name, Max(Value) from table group by Name, Value

它返回给我最高价值的记录,但我希望将其转化为更新,以便我可以

  • 标记IsMaxValue 中具有最高值的记录
  • 对于名称、值组中的每条记录,存储在“MaxValue”字段中找到的最高值

简单的选择版本在这里:

http://sqlfiddle.com/#!9/ccd32/5

如果可能的话,按照上述准备好更新的字段。

【问题讨论】:

  • 这是你想要的吗? sqlfiddle.com/#!9/d3523/1
  • @jpw 输出是肯定的,虽然我看不出你的有什么不同。啊,我的坏我需要学习使用滚动条。谢谢。
  • @MarkH 更新查询位于小提琴的左窗格中。如果这给出了您想要的结果,我会将其作为答案发布。
  • 不存储派生数据

标签: mysql max


【解决方案1】:

我相信您可能正在寻找以下声明:

update maxvalues
join (
  Select Color, Max(`Value`) max_value 
  from MaxValues 
  group by Color
) a on maxvalues.color = a.color and value = a.max_value
set ismaxrecord = '1', maxrecordid = a.max_value;

Sample SQL Fiddle

根据您的示例数据,更新后的表格如下所示:

|  Color | Value | IsMaxRecord | MaxRecordID |
|--------|-------|-------------|-------------|
| Orange |     1 |             |           0 |
| Orange |     2 |             |           0 |
| Orange |     3 |           1 |           3 |
|  Black |    30 |           1 |          30 |
|  Black |    20 |             |           0 |
|  Black |    10 |             |           0 |

【讨论】:

    猜你喜欢
    • 2014-01-30
    • 1970-01-01
    • 2020-01-14
    • 2017-01-15
    • 1970-01-01
    • 2019-04-12
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多