SQLite에서 제가 지금 하려고 하는게 가능한지 궁금합니다. 0 4 718

by 이승주 [DB 기타] [2016.11.22 02:50:06]


만약에 Test_table 이라는 이름을 가진 테이블의 내용이

 

종류    이름_1   이름_2

1        AB         (null)

1        (null)       C

2        aa          (null)

2        (null)       bb

3        ㅎㅎ       (null)

3        (null)      ㄱㄱ

 

이렇다 라고 가정했을 때, 종류별 (이름_1 이름_2) 의 조합이 

(AB,C) 인 것을 찾으려고 합니다.

 

다시 말해서 제가 원하는 결과는 아래와 같습니다.

1        AB         (null)

1        (null)       C

 

한 테이블에 있는 두 행의 데이터를 비교해야하는데.. 방법이 있을까요? ㅠㅠ

by 마농 [2016.11.22 09:14:06]
SELECT *
  FROM Test_table
 WHERE 종류 IN (SELECT 종류
                 FROM Test_table
                GROUP BY 종류
               HAVING MIN(이름_1) = 'AB'
                  AND MIN(이름_2) = 'C'
               )
;
SELECT t3.*
  FROM Test_table t1
 INNER JOIN Test_table t2
    ON t1.종류 = t2.종류
 INNER JOIN Test_table t3
    ON t2.종류 = t3.종류
 WHERE t1.이름_1 = 'AB'
   AND t2.이름_2 = 'C'
;
SELECT *
  FROM Test_table m
 WHERE EXISTS (SELECT 1 FROM Test_table s WHERE s.종류 = m.종류 AND s.이름_1 = 'AB')
   AND EXISTS (SELECT 1 FROM Test_table s WHERE s.종류 = m.종류 AND s.이름_2 = 'C')
;

 


by 이승주 [2016.11.22 16:02:12]

감사합니다!! ㅎㅎ


by 이승주 [2016.11.22 16:51:07]

그 혹시.. 같은 컬럼 값일 때도 찾을 수 있나요?

 

종류    이름

1        AB         

1        C

2        aa        

2        bb

3        ㅎㅎ    

3        ㄱㄱ

 

일 때 (AB,C) 의 조합을 찾는 방법이요 ㅠㅠ


by 마농 [2016.11.22 17:18:55]
SELECT *
  FROM Test_table
 WHERE 종류 IN (SELECT 종류
                 FROM Test_table
                WHERE 이름 IN ('AB', 'C')
                GROUP BY 종류
               HAVING COUNT(*) = 2
               )
;
SELECT t3.*
  FROM Test_table t1
 INNER JOIN Test_table t2
    ON t1.종류 = t2.종류
 INNER JOIN Test_table t3
    ON t2.종류 = t3.종류
 WHERE t1.이름 = 'AB'
   AND t2.이름 = 'C'
;
SELECT *
  FROM Test_table m
 WHERE m.이름 IN ('AB', 'C')
   AND EXISTS (SELECT 1
                 FROM Test_table s
                WHERE s.종류 =  m.종류
                  AND s.이름 <> m.이름
                  AND s.이름 IN ('AB', 'C')
               )
;
SELECT *
  FROM Test_table m
 WHERE EXISTS (SELECT 1 FROM Test_table s WHERE s.종류 = m.종류 AND s.이름 = 'AB')
   AND EXISTS (SELECT 1 FROM Test_table s WHERE s.종류 = m.종류 AND s.이름 = 'C')
;

 

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