MySQL - Search into a custom Column

两盒软妹~` 提交于 2019-12-13 08:07:34

问题


I want to run a MySQL query like this-

 SELECT country_ID*2/id*3.159 as my_id
 FROM `state`
 WHERE my_id>2;

When I run it, I am getting an error like this-

1054 - Unknown column 'my_id' in 'where clause'

Is there any alternative solution to search in my new created virtual column my_id ?


Actually I am trying to make a search in Laravel Query Builder like this-

  DB::table(    'project')->select( 'project.id as id',
                                    'project.completion_date as completion_date',
                                     DB::raw('FORMAT(project.total_cost_to_dispose - project.actual_cost_dispose, 2) as disposal_savings')
                                   )
                            ->where(disposal_savings>100);

Can I do it?

If not, then what is the solution in Laravel or MySQL?


回答1:


Use complete condition again in where clause as:

  DB::table(    'project')->select( 'project.id as id',
                                    'project.completion_date as completion_date',
                                     DB::raw('FORMAT(project.total_cost_to_dispose - project.actual_cost_dispose, 2) as disposal_savings')
                                   )
                            ->where FORMAT(project.total_cost_to_dispose - project.actual_cost_dispose, 2) > 100;



回答2:


You cannot refer in WHERE to aliases, use instead:

SELECT country_ID*2/id*3.159 as my_id 
FROM `state`
WHERE (country_ID*2/id*3.159)>2;

or use subquery:

SELECT t.*
FROM
(
   SELECT country_ID*2/id*3.159 as my_id 
   FROM `state`
) as t
WHERE t.my_id>2

Simplified logical query processing, SELECT is almost last, so WHERE doesn't know about my_id alias:

Image source: https://social.technet.microsoft.com/wiki/contents/articles/20724.all-at-once-operations-in-t-sql.aspx



来源:https://stackoverflow.com/questions/32624823/mysql-search-into-a-custom-column

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!