본문 바로가기
php개발자(백엔드) /DB_mysql

서브쿼리 concat() 검색

by 장김치 2018. 3. 5.

[서브쿼리 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