我有这样的表格:
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
如果您想将其扩展为仅在第一行显示 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
如果您想要比较多个列,那么您可以使用 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
关于mysql - 如何显示整个表的最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14968111/