Originariamente inviato da JoeP
Ciao a tutti, ho una query del tipo:

SELECT id, nome, cognome, IF(eta = 0, 'Età non specificata', eta) AS eta
FROM persone
WHERE eta < 30

Il campo eta fa parte della tabella, e se è a zero significa che non è stata specificata. Quindi non prendo quel campo nelle SELECT, ma un campo calcolato con un IF() che poi rinomino come eta. Facendo così però non posso fare la restrizione con il WHERE, perchè il comando WHERE vuole solo campi originari della tabella, e non calcolati. Come posso fare?

Dalla documentazione:
It is not allowable to use a column alias in a WHERE clause, because the column value might not yet be determined when the WHERE clause is executed.
Non e' buona norma comunque sia, utilizzare lo stesso nome campo per un nome alias. Non sarebbe pure corretto, ben fosse ammesso, paragonare la stringa 'Età non specificata' come < 0.

non si capisce se vuoi anche il record quando e' zero cioe' come 'Età non specificata'.