안녕하세요. 오랜만에 sql문을 써보려고 하니깐 어렵네요.
테이블 A와 B가 있는데요.
두 테이블에는 모두 member_srl 컬럼이 있습니다.
테이블 A와 B에 where 을 통해 AND 조건을 주고, 두 조건을 모두 만족하는 member_srl 을 출력하려고 하는데요.
SELECT B.member_srl
FROM A, B
WHERE A.group NOT LIKE 'apple'
AND B.group_num = 12345;
대충 위와 같은 조건을 만족하는 member_srl 을 출력하고 싶은데 저렇게하면 제대로 안나오네요...
Join을 해야할 것 같긴한데 안써본지 하도 오래돼서 찾아봐도 모르겠네요.
sql문을 어떤식으로 고쳐야할까요? ㅠㅠ
lord
Lv. 2
댓글 11
A와 B를 조인하는 조건이 빠졌네요. 양쪽에 뭔가 같은 값이 있는 경우만 찾아야 하잖아요.
WHERE 부분에 AND A.컬럼이름 = B.컬럼이름 조건을 추가하셔야 합니다.
감사합니다 기진님.
SELECT B.member_srl
FROM A, B
WHERE A.member_srl = B.member_srl
AND A.group NOT LIKE 'apple'
AND B.group_num = 12345;
그럼 이렇게 하면 제대로 나와야 정상인건가요!?
기진님 혹시 select문 간의 차집합을 구하는법은 없을까요?
SELECT a.member_srl FROM xe_member_group_member a, xe_services_applicant b
WHERE a.member_srl = b.member_srl AND a.group_srl=831378 AND b.status LIKE 'G';
와
SELECT a.member_srl FROM xe_member_group_member a, xe_services_applicant b
WHERE a.member_srl = b.member_srl AND a.group_srl=831378 AND b.status NOT LIKE 'G';
두 개 결과값에서 중복을 제거한 값을 출력시키고 싶은데요.
MySQL에선 MINUS 함수가 지원이 안되나보네요... ㅠㅠ
MySQL에서는 MINUS, INTERSECT를 지원하지 않으므로 두 번째 쿼리 결과를 LEFT JOIN한 후 해당 필드가 NULL인지 아닌지로 구분합니다.
http://www.gokhanatil.com/2010/10/minus-and-intersect-in-mysql.html
감사합니다! 그런데 Left Join 예시에서는 보면 WHERE 절이 없이 Select * From 구문만 Join 하는 식이던데
두 Select 문 모두 Where 조건문이 있는 상태에서도 Left Join으로 출력할 수가 있을까요?
SELECT * FROM table AS a ..... LEFT JOIN (SELECT ..... WHERE .....) AS b WHERE .....
이런 식으로 들어갑니다. 서브쿼리를 가상의 테이블로 취급하지요.
이렇게 했더니 에러가나네요 ㅠㅠ
디비 너무 어렵네요 ㅠㅠㅋㅋㅋ