SQL 읽는 순서

BackEnd_Ash.log·2020년 5월 8일
0

select where

mysql> select * , retail_price + price AS amount from products where amount >=2000;
ERROR 1054 (42S22): Unknown column 'amount' in 'where clause'
mysql> select * , retail_price + price AS amount from products where retail_price+price >=2000;
+----+-----------+--------------------+--------------+-------+------------------+----------------+----------------------------+----------------------------+--------+
| id | name      | image              | retail_price | price | ingredient_image | delivery_guide | created_at                 | updated_at                 | amount |
+----+-----------+--------------------+--------------+-------+------------------+----------------+----------------------------+----------------------------+--------+
|  8 | 왕꿈틀    | 왕꿈틀이미지       | 1900         | 1500  | NULL             | NULL           | 2020-04-28 16:47:34.147067 | 2020-04-28 16:47:34.147133 |   3400 |
+----+-----------+--------------------+--------------+-------+------------------+----------------+----------------------------+----------------------------+--------+
1 row in set (0.00 sec)

앞에서 amount 라고 별명을 지어 주어도 사용할수가 없다
왜 ?? == > where 문이 먼지 읽혀지기 때문이다.

where 구 -> select 구 의 순서로 처리됨

하지만 order 문은 다르다

select orderby

mysql> select *,retail_price + price AS amount from products order by amount desc;
+----+-----------------+--------------------+--------------+-------+------------------+----------------+----------------------------+----------------------------+--------+
| id | name            | image              | retail_price | price | ingredient_image | delivery_guide | created_at                 | updated_at                 | amount |
+----+-----------------+--------------------+--------------+-------+------------------+----------------+----------------------------+----------------------------+--------+
|  8 | 왕꿈틀          | 왕꿈틀이미지       | 1900         | 1500  | NULL             | NULL           | 2020-04-28 16:47:34.147067 | 2020-04-28 16:47:34.147133 |   3400 |
|  7 | 프레첼          | 프레첼이미지       | 400          | 450   | NULL             | NULL           | 2020-04-28 16:44:59.708156 | 2020-04-28 16:44:59.708191 |    850 |
|  6 | 하리보          | 하리보이미지       | 100          | 150   | NULL             | NULL           | 2020-04-28 16:44:36.731234 | 2020-04-28 16:44:36.732927 |    250 |
|  1 | 초코빼빼로      | 초코이미지         | 920          | NULL  | NULL             | NULL           | 2020-04-25 17:03:10.411578 | 2020-04-25 17:03:10.413312 |   NULL |
|  2 | 진라면          | 진라면             | 2950         | NULL  | NULL             | NULL           | 2020-04-25 17:03:35.312067 | 2020-04-25 17:03:35.312108 |   NULL |
|  3 | 육개장          | 육개장이미지       | 18990        | NULL  | NULL             | NULL           | 2020-04-25 17:04:00.549572 | 2020-04-25 17:04:00.549636 |   NULL |
|  4 | 너구리          | 너구리이미지       | 4250         | NULL  | NULL             | NULL           | 2020-04-25 17:04:25.844234 | 2020-04-25 17:04:25.844432 |   NULL |
|  5 | 씨리얼          | 씨리얼             | 660          | NULL  | NULL             | NULL           | 2020-04-25 17:04:59.212406 | 2020-04-25 17:04:59.212440 |   NULL |
+----+-----------------+--------------------+--------------+-------+------------------+----------------+----------------------------+----------------------------+--------+

where 문과 달리 이것이 가능한 이유는 ,
order 문은 select 문이 실행되고 난뒤에 실행이 된다

select 구 => order by 구 실행됨

select where order by

where 구 => select 구 => order by 구

순으로 실행이 된다.

sql , wecode

profile
꾸준함이란 ... ?

0개의 댓글