where su dati da select

peppeocchi

Utente Attivo
20 Apr 2013
30
0
0
Salve,
dal titolo si capisce veramente poco, scusatemi.

Sto cercando di fare una cosa del genere

Codice:
SELECT *, ROUND(......) AS newColumn FROM tabella WHERE newColumn < 10 ORDER BY newColumn

ovviamente così non funziona perchè non conosce la newColumn.

Qualche idea?
Ho già provato con una subquery, anzi diverse combinazioni, ma non mi soddisfa il tempo di esecuzione o la replicazione di codice.

prova 1 - 0,19 sec
Codice:
SELECT * FROM ( select *,ROUND(...) as new from table ) as t1 WHERE new < 10 ORDER BY new
Troppo tempo, tra l'altro fa la ROUND su 80000 risultati per restituirmi la stessa tabella con una colonna in più.

prova 2 - 0,07 sec
Codice:
SELECT *,ROUND(...) as new FROM tabella WHERE 10 > ROUND(...) order by new
Quest'ultima potrebbe andare anche bene, ma non mi piace dove replicare due volte la stessa cosa (la ROUND() che in realtà è qualcosa di questo tipo ROUND((SQRT(POW(x-(0),2) + POW(y-(0),2))),2) ).
 
non vedo alternative, io ho sempre applicato l'ultimo metodo che hai postato
 
Premetto che anche io ho sempre usato l'ultimo però mi hai messo il dubbio e sono andato a cercare in giro per il web ma niente, credo che il modo più veloce e anche quello più giusto da utilizzare sia quello.
 

Discussioni simili