2009-08-20 16 views
9

Digamos que tengo una tabla con karma_up y karma_down. Cada vez que alguien vota, karma_up se incrementa y cada vez que alguien vota, karma_down también se incrementa. ¿Cómo puedo seleccionar una selección de filas y ordenarlas por la suma de estos nuevos valores? ORDER BY (karma_up - karma_down) no parece funcionar como yo quiero. Simplemente quiero las filas con el karma más alto arriba.Orden por suma de dos campos

+0

El resultado final de esta pregunta era SELECT *, CAST (karma_up - karma_down AS Firmado) AS karma_total FROM 'links' ORDER BY DESC karma_total que necesitaba a CAST porque estaba obteniendo números muy grandes para mis valores de karma negativos. Esto es lo que recibo por anular mis campos karma_up y karma_down, pero CAST() fue la solución. ¡Gracias, ya! –

Respuesta

19

Muy simple

SELECT 
ID, KARMA_UP, KARMA_DOWN, (KARMA_UP-KARMA_DOWN) AS USER_KARMA 
FROM KARMA 
ORDER BY USER_KARMA DESC 
+0

El OP quiere el más alto en la parte superior y creo que necesita DESC como lo publicó Bill Karwin. –

+0

Gracias. Solucioné mi respuesta –

0

hace este trabajo? Si no, ¿podría incluir los resultados en su pregunta? Ordenar en una expresión debería funcionar como se esperaba.

SELECT `post_id`, `karma_up`, `karma_down`, `karma_up` - `karma_down` AS `total` 
ORDER BY `total` DESC 
6
SELECT *, karma_up - karma_down AS karma_total 
FROM MyTable 
ORDER BY karma_total DESC; 
+0

Ouch, publiqué una respuesta correcta justo después de que se publicara la respuesta seleccionada. – Pachonk

+1

Ganas un poco, pierdes un poco. Lo importante es que al OP le respondieron su pregunta. –

+1

Es cierto, pero solo simpatizante. – Pachonk

Cuestiones relacionadas