mysql - 查找最小值列和最小值列名称

标签 mysql sql

我有一个名为formal的表:

id date         name     d1    d2     d3     d4
1  20/10/2017   bimal    6     7      8      9
2  20/10/2017   kumar    13    10     11     12
3  20/10/2017   aman     16    17     14     15
4  20/10/2017   halim    25    21     23     16

我需要按列最小。值(value)。即 d1=6+13+16+25=60, d2=7+10+17+21=55, d3=8+11+14+23=56,d4=9+12+15+19=52

此处下栏是 d4。所以我的 min _value col 将为 9,12,15,19。

我的下一栏是min_value_col。简单来说就是 d4, d4, d4, d4。

现在我的输出表将如下:

id date         name     d1    d2     d3     d4   min_value    min_value_col
1  20/10/2017   bimal    6     7      8      9    9              d4
2  20/10/2017   kumar    13    10     11     12   12             d4
3  20/10/2017   aman     16    17     14     15   15             d4
4  20/10/2017   halim    25    21     23     16   16             d4

我需要通过mysql查询分别填写min_valuemin_value_col字段。

最佳答案

您似乎想要:

select f.*,
       (case ff.least_col
             when 'd1' then d1
             when 'd2' then d2
             when 'd3' then d3
             when 'd4' then d4
        end) as least_val,
       ff.least_col
from formal f cross join
     (select least(sum(d1), sum(d2), sum(d3), sum(d4)) as least_val,
             (case least(sum(d1), sum(d2), sum(d3), sum(d4))
                   when sum(d1) then 'd1'
                   when sum(d2) then 'd2'
                   when sum(d3) then 'd3'
                   when sum(d4) then 'd4'
              end) as least_col
      from formal
     ) ff;

关于mysql - 查找最小值列和最小值列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46988470/

相关文章:

mysql - SQL 连接 4 个表,仅从 2 个表中选择列

php - 从表单输入中搜索 SQL 中的部分变量

php - IIS7 服务器上的 Web 服务用于 Apache 服务器上的网站

php - 使用 product_id 上传的 Laravel dropzone 问题

sql - 遍历游标数据并插入记录(如果不存在)

mysql - 如何获取用户最后插入的值?

python - SQL:如何将两列 GROUP BY 作为无序对?

php - 无法使用 PHP 7 初始化 mbstring

mysql - 在线手机和手机配件购物的数据库设计

mysql - 使用 bash 从文件中插入和编辑 mysql 行