>  기사  >  데이터 베이스  >  mysql 개발 스킬: JOIN 업데이트 및 데이터 중복 검사/중복 제거_MySQL

mysql 개발 스킬: JOIN 업데이트 및 데이터 중복 검사/중복 제거_MySQL

WBOY
WBOY원래의
2016-11-30 23:59:421895검색

주로 포함: JOIN, JOIN 업데이트, GROUP BY HAVING 데이터 중복 검사/중복 제거

1 INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN(MySQL에서는 지원되지 않음), CROSS JOIN

이것은 제가 인터넷에서 찾은 매우 좋은 블로그 게시물로, Join 문을 설명하고 있습니다.

CODING HORROR-SQL 조인에 대한 시각적 설명

다음 그림을 보면 Join의 데이터 선택 범위를 명확하게 알 수 있습니다

[][1]
[1]: http://7xs09x.com1.z0.glb.clouddn.com/160725-imooc-mysql-development-skills-notes-001.png

2 필터 조건에 자신을 포함하는 테이블 업데이트

t1 t2 테이블에서 col_a의 반복 필드 업데이트

UPDATE t1 
SET col_a = 'hi' 
WHERE t1.col_a IN (
 SELECT b.col_a
 FROM t1 a INNER JOIN t2 b on
 a.col_a = b.col_a
)
;
ERROR:1093 

은 다음으로 변환될 수 있습니다:

UPDATE t1 aa JOIN(
 SELECT b.col_a
 FROM t1 a INNER JOIN t2 b on
 a.col_a = b.col_a
)bb on aa.col_a= bb.col_a
SET col_a = 'hi' 
;

3 중복 데이터 조회 및 중복 데이터 삭제

GROUP BY 및 HAVING을 사용하여 중복 데이터 쿼리

SELECT col_a, COUNT(*)
FROM t1
GROUP BY col_a HAVING COUNT(*) > 1
;

중복된 ​​데이터는 삭제하고 동일한 데이터에 대해서는 ID가 가장 큰 데이터를 유지합니다

DELETE a
FROM t1 a JOIN (
 SELECT col_a,COUNT(*),MAX(id) AS id
 FROM t1
 GROUP BY col_a HAVING COUNT(*) > 1
)b ON a.col_a = b.col_a
WHERE a.id < b.id
;

이 기사를 읽어주셔서 감사합니다. 모든 사람에게 도움이 되기를 바랍니다. 이 사이트를 지원해 주셔서 감사합니다!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.