Mysql 选择每组一列的最大值
我想显示Mysql 选择每组一列的最大值,mysql,group-by,inner-join,Mysql,Group By,Inner Join,我想显示porcentaje列的值,但仅显示id最高的记录(每个项): 输出: item id porcentaje -------------------------------------------- EXCAVACION DE FUNDACION 90 100 EXCAVACION DE FUNDACION 91 50 HORMIGON FUNDACIONES 92 90 HORMIGON
porcentaje
列的值,但仅显示id最高的记录(每个项
):
输出:
item id porcentaje
--------------------------------------------
EXCAVACION DE FUNDACION 90 100
EXCAVACION DE FUNDACION 91 50
HORMIGON FUNDACIONES 92 90
HORMIGON FUNDACIONES 93 40
我只想显示标记的记录:
item id porcentaje
--------------------------------------------
EXCAVACION DE FUNDACION 90 100
EXCAVACION DE FUNDACION 91 50 <------
HORMIGON FUNDACIONES 92 90
HORMIGON FUNDACIONES 93 40 <------
您应该按项目分组,然后可以使用
group_concat
,它有一个order by
子句,然后从中提取第一个值:
SELECT tb_avance.item,
max(tb_avance.id) as id,
cast(group_concat(tb_proceso.porcentaje order by id desc) as unsigned)
as porcentaje
FROM tb_avance_detalle
INNER JOIN tb_avance on tb_avance_detalle.id_avance = tb_avance.id
INNER JOIN tb_proceso ON tb_proceso.id_avance_detalle = tb_avance_detalle.id
INNER JOIN tb_mapa ON tb_mapa.id = tb_avance_detalle.id_mapa
WHERE tb_mapa.manzana = 107
AND tb_mapa.lote = 12
GROUP BY tb_avance.item
看见
item id porcentaje
--------------------------------------------
EXCAVACION DE FUNDACION 91 50
HORMIGON FUNDACIONES 93 40
SELECT tb_avance.item,
max(tb_avance.id) as id,
cast(group_concat(tb_proceso.porcentaje order by id desc) as unsigned)
as porcentaje
FROM tb_avance_detalle
INNER JOIN tb_avance on tb_avance_detalle.id_avance = tb_avance.id
INNER JOIN tb_proceso ON tb_proceso.id_avance_detalle = tb_avance_detalle.id
INNER JOIN tb_mapa ON tb_mapa.id = tb_avance_detalle.id_mapa
WHERE tb_mapa.manzana = 107
AND tb_mapa.lote = 12
GROUP BY tb_avance.item