mysql - 如何显示整个表的最小值

标签 mysql select min

我有这样的表格:

id col1 col2
1   a    55
2   b    77

我想看到的结果:

id col1 col2 MIN(col2)
1   a    55   55
2   b    77

类似的事情,或者在其他情况下,我如何获得整个表的最小值。

最佳答案

您可以将CROSS JOIN与子查询结合使用,该子查询将为整个表选择min(col2)值:

select t1.id, 
  t1.col1, 
  t1.col2, 
  t2.minCol2
from yourtable t1
cross join
(
  select min(col2) minCol2
  from yourtable
) t2

参见SQL Fiddle with Demo .

如果您想将其扩展为仅在第一行显示 min(col2) 值,那么您可以使用用户定义的变量:

select id,
  col1, 
  col2,
  case when rn = 1 then mincol2 else '' end mincol2
from
(
  select t1.id, 
    t1.col1, 
    t1.col2, 
    t2.minCol2,
    @row:=case when @prev:=t1.id then @row else 0 end +1 rn,
    @prev:=t1.id
  from yourtable t1
  cross join
  (
    select min(col2) minCol2
    from yourtable
  ) t2
  cross join (select @row:=0, @prev:=null) r
  order by t1.id
) d
order by id

参见SQL Fiddle with Demo

如果您想要比较多个列,那么您可以使用 UNION ALL 查询取消透视数据,然后选择 min 结果值:

select t1.id, 
  t1.col1, 
  t1.col2, 
  t2.MinCol
from yourtable t1
cross join
(
  select min(col) MinCol
  from
  (
    select col2 col
    from yourtable
    union all
    select col3
    from yourtable
  ) src
) t2

参见SQL Fiddle with Demo

关于mysql - 如何显示整个表的最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14968111/

相关文章:

PHP 从 Postgres 意外字符中选择

mysql - 检索具有最小日期的行中的所有列?

php - 如何使用 javascript 从数据库中获取当前的伊斯兰日期记录

mysql - 使用计数选择查询

php - 拆分表单提交以加快传输时间

mysql - MySQL 中的计数查询

mysql - 选择查询从主表中获取数据和子表中的所有值?

javascript - 使用 Javascript 中的选项创建动态选择

沿着一个轴的一系列 Pandas element-wise min max

mysql - 如何从 union all join 查询中删除重复项