inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Tại sao lại thế? Thật là tuyệt vời! Thiết kế DB và xử lý dữ liệu

Tuyển tập các nhân vật chính và nhân vật, Bảng thông tin tiểu thuyết Wem

[주인공과 등장인물의 집합채, 웹소설정보테이블]작가명 생성관련

321

pink321ryu

58 câu hỏi đã được viết

1

안녕하세요.

[주인공과 등장인물의 집합채, 웹소설정보테이블](4:13)

작가명과 회원아이디를 랜덤하게 생성함에 있어서,

작가명하나에 회원아이디가 여러개로 생성이 될 소지가 있는데요. 실제로 돌려보니 중복이 나오네요. ㅡㅡ;

혹시.. 묶어서 작가명하나에 회원아이디 하나로만 매핑되도록 생성하려면 어떻게 하면 될까요?

샘플로 하는 거라 중복이 이슈거리는 아니지만..

좀 더 배우고자 하는 마음에 문의드립니다. ㅡㅡ;

sql mysql mariadb mysql-workbench

Câu trả lời 1

0

swa

충분히 의미 있는 데이터 가공이라고 생각합니다.

현재 데이터들 조건이 일부 맞지 않지만 아래의 쿼리로 구현해 보았습니다.

-- 중복된 레코드들 중 한 건만 남기고 삭제

DELETE FROM kidset

WHERE (kid, meaning)

IN (

SELECT kid, meaning FROM (

SELECT kid, meaning,

ROW_NUMBER() OVER (PARTITION BY kid ORDER BY meaning) AS row_number_

FROM kidset

) a

WHERE a.row_number_ != 1

);

-- 중복된 레코드들 중 한 건만 남기고 삭제

DELETE FROM eidset

WHERE (eid, meaning)

IN (

SELECT eid, meaning FROM (

SELECT eid, meaning,

ROW_NUMBER() OVER (PARTITION BY eid ORDER BY meaning) AS row_number_

FROM eidset

) a

WHERE a.row_number_ != 1

);

-- 작가명, 회원아이디 컬럼에 각각 중복되지 않은 유일한 값들로 조회

-- 동시에 seq 컬럼에 시퀀스값을 생성하여 임시테이블 nm 생성

SET @rownum :=0;

SET @rownum1:=0;

SET @rownum2:=0;

CREATE OR REPLACE TABLE nm

AS

WITH

a AS (

SELECT @rownum1:=@rownum1+1 AS num, CONCAT('*',kid) AS idset FROM kidset

),

b AS (

SELECT @rownum2:=@rownum2+1 AS num, CONCAT(eid,'*') AS idset FROM eidset

)

SELECT

@rownum:=@rownum+1 AS seq,

a.idset AS 작가명, b.idset AS 회원아이디

FROM a, b

WHERE b.num = a.num

ORDER BY a.idset, b.idset

;

-- 검증(0건 정상)

SELECT 작가명,COUNT(*) FROM nm

group BY 작가명

HAVING COUNT(*)>1

;

-- 검증(0건 정상)

SELECT 회원아이디,COUNT(*) FROM nm

group BY 회원아이디

HAVING COUNT(*)>1

;

-- 작가명 유일한 값, 회원아이디 유일한 값으로 wn_novel 테이블 해당 컬럼 UPDATE

UPDATE wn_novel a INNER JOIN nm

ON a.`작품번호` = nm.seq

SET

a.`작가명` = nm.`작가명`,

a.`회원아이디` = nm.`회원아이디`

;

문제는 wn_novel 테이블은 총 1,002 건인데 반해 eidset 테이블은(회원아이디) 329 건(유일한 값) 밖에 되지 않아 유일한 값을 넣을 수가 없습니다. kidset 테이블은(작가명) 1,372 건(유일한 값)이므로 충분히 유일한 값 입력이 가능합니다.

eidset 테이블의 eid 컬럼값이 유일하도록 1,002 건 이상 데이터 추가 후 위의 쿼리들을 수행한다면 정상 처리될 것으로 여겨집니다.

 

 

개인 사정으로 24~26일(다음 주 월요일)까지 자리를 비웁니다. 질문 남겨주시면 차주 화요일 이후로 꼭 답변드리도록 하겠습니다. 양해부탁드립니다 감사합니다.

21c 버전으로 해도 무방한가요?

0

11

3

관리자 페이지 질문

0

12

1

vercel실행 - failed to fetch

0

17

2

드랍 테이블로 지운 ordes에 대해서 질문

0

23

1

문제 풀이 1번 질문

0

29

1

twitterdb 연결이 안돼요

1

30

2

Kafka Cluster 구성도 질문

0

23

1

아주 작은 정오표 전달드립니다.

0

52

2

mysql워크벤치를 실행할때마다 오류가 뜹니다. 해결 방법좀 가르켜주세요.

0

44

1

실제로 작은 기업에서 기획 롤

1

27

1

함수기반 인덱스

0

30

2

날짜 인덱스관련 질문

0

27

1

복합인덱스 확인법

0

24

0

이제 인프런에서 강의 더 안산다. 후져....

0

42

1

order_product 까마귀발

0

44

2

소스코드 어디서 다운받아요?

0

55

5

답을언제쯤받아볼수있나요

0

49

2

[스토리 그 자체, 실적 테이블](9:51)max_recursive_iterations

1

588

2

urlcodemap 쿼리 파일 확인요청

1

331

2

[공유][대사와 액션, 회차정보테이블]contents2 생성관련

1

427

2

[주인공과 등장인물의 집합체,웹소설정보테이블]wn_novel테이블 생성

1

270

1

[ERD로 보는 스토리와 테이블이라는 등장인물]태그정보 테이블 설계관련

1

296

1

[공유][워크밴치사용관련]한글깨짐

1

657

1

[가상데이터 생성]

1

238

1