Diciamo che ho un tavolo con karma_up e karma_down. Ogni volta che qualcuno vota, karma_up viene incrementato e ogni volta che qualcuno vota, karma_down viene incrementato di uno. Come posso tirare queste selezioni di righe e ordinarle in base alla somma di questi nuovi valori? ORDER BY (karma_up - karma_down) non sembra funzionare come voglio. Voglio semplicemente le righe con il karma più alto in alto.Ordine per somma di due campi
9
A
risposta
19
Molto semplice
SELECT
ID, KARMA_UP, KARMA_DOWN, (KARMA_UP-KARMA_DOWN) AS USER_KARMA
FROM KARMA
ORDER BY USER_KARMA DESC
+0
L'OP vuole il massimo in cima e penso che abbia bisogno di DESC come ha scritto Bill Karwin. –
+0
Grazie. Ho corretto la mia risposta –
0
funziona? In caso contrario, potresti includere i risultati nella tua domanda? Ordinare su un'espressione dovrebbe funzionare come previsto.
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;
Il risultato finale di questa domanda era SELECT *, CAST (karma_up - karma_down AS FIRMATO) AS karma_total DAL 'links' ORDER BY DESC karma_total avevo bisogno di CAST perché ero ottenere numeri molto grandi per i miei valori di karma negativo. Questo è ciò che ottengo per non firmare i miei campi karma_up e karma_down ma CAST() era la soluzione. Grazie! –