한 테이블의 컬럼 값을 포함하고 있는 테이블의 레코드를 가져오고 싶은 경우가 있어서, 적용하는 법을 찾아봤습니다.
예를 들어서, product 테이블과 order 테이블이 존재한다고 생각했을 때,
order 테이블에는 title이라는 컬럼이 존재합니다. title 컬럼에는 product의 상품 번호 + string이 적혀져있는 구조라고 가정을 해봅니다.
그런 경우에, product의 상품번호를 이용해서 TITLE LIKE '%상품번호%' 형식으로 order 테이블의 레코드를 가져오는 구조입니다.
order
id | title |
1 | 모델 (AAA-123) 를 구매했습니다. |
2 | 모델 (BBB-222) 를 구매했습니다. |
3 | 모델 (DDD-222) 를 구매했습니다. |
4 | 모델 (CCC-394) 를 구매했습니다. |
product
id | model |
1 | AAA-123 |
2 | BBB-222 |
3 | CCC-394 |
서브쿼리를 이용
SELECT * FROM product p
WHERE (
SELECT `title` FROM order o
) LIKE '%' || p.model || '%';
"||"는 문자열을 합치기 위해서 사용한 연산자 이므로, DBMS에 맞춰서 지원하는 문법을 사용하시면 됩니다.
JOIN을 이용
SELECT * FROM product p JOIN order o ON o.title LIKE '%' || p.model || '%';
JOIN을 사용하면 더욱 직관적으로 사용할 수 있습니다.
'IT 공부 > DB' 카테고리의 다른 글
[DB] 데이터 베이스 정규화 (제 1 정규화, 제 2정규화, 제 3정규화) (0) | 2024.07.01 |
---|---|
컬럼 수정하기 (제약조건, 컬럼명, 데이터 타입) (0) | 2024.06.24 |
[ MySQL ] Auto_increment 초기화 && 기존 데이터 ID값 초기화 (0) | 2022.04.03 |
[DB] 객체 - 데이터 사전, 인덱스, 뷰, 시퀀스, 동의어 (0) | 2021.12.02 |
[DB] 서브쿼리 (단일행, 다중행, 다중열, WITH절) (0) | 2021.12.01 |