2012-10-06 44 views
6

Mis valores de las columnas de la tabla db sonObtener el valor máximo de una columna en la base de datos MySQL

tenant_ id group_id 
2   2-100 
2   2-111 
1   1-222 
1   1-888 
2   2-999 
2   2-1000 

Consulta:

select max(group_id) from prospect_group where tenant_id=2 

He utilizado la consulta anterior para obtener el valor máximo para tenant_id = 2, pero devuelve el valor como 999 en lugar de 1000. ¿Cómo obtener 1000 como valor máximo? Alguien puede ayudarme..???

+0

¿Es group_id a varchar column? Si es así, conviértalo en entero y luego ejecute MAX() en él. – Vikdor

+0

sí group_is es varchar – Baskar

Respuesta

5

Es necesario tener GROUP BY cláusula

SELECT tenant_ID, MAX(CAST(group_ID AS SIGNED)) 
FROM tableName 
-- WHERE tenant_id=2 -- uncomment this if you select only for specific tenant_ID 
GROUP BY tenant_ID 

intentarlo mediante la sustitución de un carbón vacía.

SELECT tenant_ID, 
     MAX(CAST(REPLACE(group_ID, CONCAT(tenant_ID, '-'), '') AS SIGNED)) maxGID 
FROM tableName 
-- WHERE tenant_id=2 -- uncomment this if you select only for specific tenant_ID 
GROUP BY tenant_ID 

SQLFiddle Demo

+0

¿Cómo resolvería esto el problema del OP? Creo que GROUP BY es redundante en su caso y si la columna fuera entera, habría devuelto 1000, lo que parece no ser el caso. – Vikdor

+0

ya funciona, pero siegue según mi requisito. Cambié mi mesa. ¿Puede encontrar el problema anterior? – Baskar

+0

@Baskar ¿qué has cambiado la tabla? –

1

es necesario agregar GROUP BY cláusula.

select max(group_id) from prospect_group where tenant_id=2 group by tenant_ id 
+0

ya funciona, pero siegue según mi requisito. Cambié los datos de mi tabla. ¿Puede encontrar el problema anterior? – Baskar

Cuestiones relacionadas