J'ai une requête où j'ai une expression de date complexe comme l'une des colonnes.se réfère à la valeur d'expression complexe dans where clause
SELECT
date_column + INTERVAL(complex_jimmy_jam) DAY AS complex_date_calculation
FROM table
Je veux faire référence à cette colonne dans la clause where
WHERE complex_date_calculation < NOW()
Mais mysql selfs là-dessus.
1054: Unknown column 'complex_date_calculation' in 'where clause'
Une façon de le faire est de l'envelopper dans un sous-select
SELECT * FROM (
SELECT
date_column + INTERVAL(complex_jimmy_jam) DAY AS complex_date_calculation
FROM table
) AS alias
WHERE complex_date_calculation < NOW()
Est-ce la meilleure façon?
Je pourrais aussi refaire le calcul dans la clause WHERE, mais cela semble stupide. Pourquoi la base de données a-t-elle calculé cette date deux fois? Ou, l'optimiseur stockera-t-il cette valeur?
Dans mon cas, je devais utiliser à la fois un « où » et aussi ce « avoir ». Cela fonctionne parfaitement :) –