【问题标题】:How to find the max of each row in a table in MYSQL如何在MYSQL中找到表中每一行的最大值
【发布时间】:2020-04-23 17:56:13
【问题描述】:

我有一张下面有 N 行的表格。这里我将其简化为 3 行。

示例表

        A                   B                   C                      D
5.640700669769904   5.623475843268976   5.644739934022418
5.62489798487818    5.581388826442135   5.62376476667017
5.62708139972593    5.606610562903928   5.592366625377977

我需要找到新的 D 列,它包含 A、B、C 列的行的最大值。

在MYSQL MAX(X) 中只适用于列。我该如何解决这个问题?

我尝试过使用子表,但没有运气。

【问题讨论】:

  • “我已经尝试过使用子表,但没有运气”那么它在哪里????我没有看到任何代码。
  • 列中有NULL 的值吗?
  • 列中没有空值。没有。
  • 这类问题是架构设计不佳或有缺陷的高度症状
  • 有趣。你能详细说明一下吗?我不确定我理解你的意思。最初的 A、B、C 列不能合并为一列。

标签: mysql sql select group-by max


【解决方案1】:

max() 是一个聚合函数,它对跨行存储的值进行操作(尽管某些数据库,即 SQLite,允许将其用于值列表)。

您可以使用greatest() 获取每行三列的最大值:

select t.*, greatest(a, b, c) d from mytable

另一方面,如果您想要所有 3 列和所有行的最大值,您可以同时使用 max()greatest()

select max(greatest(a, b, c)) overall_greatest from mytable

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    • 2020-10-11
    • 1970-01-01
    相关资源
    最近更新 更多