group by 0 1 231

by 유지니 [MySQL] [2021.09.21 06:22:38]


안녕하세요. 2가지 질문이 있습니다.

테이블 이름 : test 

id ItemNo barcodeNo
11 item10 bar10
14 item40 bar40
15 item50 bar50
18 item300 bar300
19 item41 bar40
20 item50 bar50

 

1.

barcodeNo 가 중복돼 있는 것을 찾습니다.

SELECT barcodeNo, COUNT(*) FROM test
GROUP BY barcodeNo
HAVING COUNT(*) > 1

barcodeNo COUNT(*)
bar40 2
bar50 2

 

 barcodeNo 가 bar40 과 bar50 이 2씩 있는데

그 때 bar40 은 각각 다른 itemNo 를 갖고 있고

bar50 은 같은 itemNo 를 갖고 있습니다.

구하려고 하는 것은 bar40 처럼 각기 다른 itemNo 를 갖고 있는

barcodeNo 를 구하려면 어떻게  해야 할까요?

 

2.

다른 테이블에서 test 테이블의 id 를 갖고 있습니다.

barcodeNo 를 하나씩만 가져와서 그것들의 id 를 구해 놓으려고 합니다.

id 가 11, 14, 15, 18 을 구하려면 어떻게 해야 할까요?

 

by 마농 [2021.09.23 09:14:47]
-- 1. 
SELECT barcodeNo
     , COUNT(*) cnt_all
     , COUNT(DISTINCT ItemNo) cnt_distinct
  FROM test
 GROUP BY barcodeNo
HAVING COUNT(DISTINCT ItemNo) > 1
;

-- 2. 
SELECT barcodeNo
     , MIN(ID) id_min
  FROM test
 GROUP BY barcodeNo
;

 

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