서브쿼리 조건절 검색방법 문의합니다. 0 2 2,289

by 비연 [MySQL] [2017.12.05 22:44:41]


안녕하세요.

서브쿼리로 select 해온 것에서 조건절에서 검색할수 있는 방법이 없는지요...

ex) 아래와 같은 쿼리가 있을 경우

SELECT sp.loaner_sn
        ,sp.loaner_model
        ,sp.loaner_owner_company
        ,(select x.loaner_io_sts from cs_loaner_process x where x.loaner_sn = sp.loaner_sn order by x.loaner_proc_no desc limit 1) as loaner_io_sts
FROM cs_loaner_info sp
WHERE loaner_io_sts = '01'
ORDER BY loaner_sn  desc LIMIT 0,100 

대략 이런식으로 쿼리를 수행하면 저 loaner_io_sts 로 검색이 되지 않고 Unknown column 'loaner_io_sts ' in 'where clause' 에러를 만드네요.

저렇게 서브쿼리로 가져온 데이터중에서 검색조건에 포함시켜서 검색할수 있는 방법이 없는지요..

DB는 mysql 입니다.

도움 부탁드립니다.

by 마농 [2017.12.06 08:58:14]
-- 1. Where 절에서 통째로 서브쿼리 쓰는 방법 --
SELECT sp.loaner_sn
     , sp.loaner_model
     , sp.loaner_owner_company
     , (SELECT x.loaner_io_sts
          FROM cs_loaner_process x
         WHERE x.loaner_sn = sp.loaner_sn
         ORDER BY x.loaner_proc_no DESC
         LIMIT 1
        ) AS loaner_io_sts
  FROM cs_loaner_info sp
 WHERE (SELECT x.loaner_io_sts
          FROM cs_loaner_process x
         WHERE x.loaner_sn = sp.loaner_sn
         ORDER BY x.loaner_proc_no DESC
         LIMIT 1
        ) = '01'
 ORDER BY loaner_sn DESC
 LIMIT 0, 100
;
-- 2. 인라인뷰를 이용하는 방법
SELECT *
  FROM (SELECT sp.loaner_sn
             , sp.loaner_model
             , sp.loaner_owner_company
             , (SELECT x.loaner_io_sts
                  FROM cs_loaner_process x
                 WHERE x.loaner_sn = sp.loaner_sn
                 ORDER BY x.loaner_proc_no DESC
                 LIMIT 1
                ) AS loaner_io_sts
          FROM cs_loaner_info sp
        ) a
 WHERE loaner_io_sts = '01'
 ORDER BY loaner_sn DESC
 LIMIT 0, 100
;

 


by 비연 [2017.12.06 10:40:57]

많은 도움이 되었습니다.

감사합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입