[서브쿼리 concat() 검색]
서브쿼리로 다른 테이블에서 두개의 필드를 합쳐서 가지고 올 경우 2개의 쿼리를 사용할수있다.
예시로 'member'와 'order'테이블이 있다.
order테이블에는 mem_idx 가 있는데 이걸 기준으로 member테이블에서 정보를 가지고 와서 검색때 사용하려고 한다.
member |
mem_idx |
mem_email1 |
mem_email2 |
order |
od_idx |
mem_idx |
(1) SELECT * FROM order WHERE (SELECT concat(mem_email1, '@', 'mem_email2) FROM member WHERE mem_idx = 'order'.mem_idx) like ''%{찾을변수}%"
(2) SELECT *,(SELECT concat(mem_email1, '@', 'mem_email2) FROM member WHERE mem_idx = 'order'.mem_idx) AS mem_mail FROM order having mem_mail like ''%{찾을변수}%"
위 1,2번의 차이는 2가지 모두 같은결과를 가져오지만 서브쿼리를 어디에 썼는지에 따라 속도가 달라진다.
2번은 1번에 비해 검색 속도가 느린 편인데 member테이블에는 mem_mail이라는 가상의 컬럼을 만들어준 후 검색에 사용하기 때문에 1번보다는 상대적으로 속도가 느려진다.
'php개발자(백엔드) > DB_mysql' 카테고리의 다른 글
mysql order by와 limit 활용 (0) | 2017.03.10 |
---|---|
카페24 DB 연결 (0) | 2017.01.20 |
MYSQL 변수 선언 및 사용 (0) | 2016.09.19 |
MYSQL WHERE절 사용 (0) | 2016.09.05 |
기본 쿼리문 (select, update, delete) 구조 및 사용 (0) | 2016.08.19 |