我有以下 MySQL 查询,其中我将三列乘以“总体获胜”。然后我想使用 overall_win 的条件 >400。但是,查询仅在没有此条件的情况下有效。我能做什么?
SELECT
*,(`obj_purchasePrice`*`win_per_100000_EUR_invest`*`rent_factor`/100000) AS `overall_win`
FROM local_data.house_data
WHERE geo_plz IN (10115,10117) AND `date`>='2019-10-29' AND `overall_win`>='400'
最佳答案
不允许在 where 条件中使用列别名,因为 where 子句在 select 子句之前求值
所以你应该重复代码
SELECT *
,(`obj_purchasePrice`*`win_per_100000_EUR_invest`*`rent_factor`/100000) AS `overall_win`
FROM local_data.house_data
WHERE geo_plz IN (10115,10117)
AND `date`>='2019-10-29'
AND (`obj_purchasePrice`*`win_per_100000_EUR_invest`*`rent_factor`/100000)>='400'
或者您可以使用 HAVING 子句(此子句作用于选择结果,并在结果呈现之前应用到选择的末尾
SELECT *
,(`obj_purchasePrice`*`win_per_100000_EUR_invest`*`rent_factor`/100000) AS `overall_win`
FROM local_data.house_data
WHERE geo_plz IN (10115,10117) AND `date`>='2019-10-29'
HAVING `overall_win` >='400'
关于mysql - 在 Where 子句中使用多列结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58671820/