반응형
SQL 다른 테이블을 기준으로 행 삭제
아마 아주 쉽겠지만 월요일 아침입니다.테이블이 두 개 있습니다.
표 1:
Field | Type | Null | Key | Default | Extra
id | int(32) unsigned | NO | PRI | NULL | auto_increment
group | int(32) | NO | | 0 |
표 2:
Field | Type | Null | Key | Default | Extra
group | int(32) | NO | | 0 |
다른 필드 무시 중...Table1.group과 동일한 Table2.group이 존재하는 Table1의 모든 행을 삭제하는 SQL DELETE 문 하나를 원합니다.따라서 표 1의 행에 group=69가 있으면 표 2에 group=69가 있는 행이 있는 경우에만 해당 행을 삭제해야 합니다.
도와주셔서 감사합니다.
이게 당신이 원하는 거라고 생각합니다.
DELETE FROM `table1`
WHERE `group` in (SELECT DISTINCT `group` FROM `table2`)
이 방법이 더 빠르다고 생각합니다.
DELETE FROM t1 USING table1 t1 INNER JOIN table2 t2 ON ( t1.group = t2.group );
좋은 솔루션은 SQL을 이미 직접 말하는 대로 작성하는 것입니다.
DELETE FROM Table1
WHERE
EXISTS(SELECT 1 FROM Table2 WHERE Table2.Group = Table1.Group)
안녕하세요, 아노 브링크먼
이런 거.
delete from table1 where group in (select group from table2)
내 머리속에서.
delete from Table1 where id in (select id from table1 inner join table2 on Table1.group = Table2.group)
저는 다른 포스터들과는 조금 다르게 했습니다. 표 2에 행이 많다면 이것이 더 나을 수도 있다고 생각합니다.누가 제게 그것에 대해 설명해 주실 수 있나요?
다음과 같은 단순 조인 쿼리에서 별칭을 사용하여 테이블 행을 삭제할 수 있습니다.
delete a from table1 a,table2 b where a.uid=b.id and b.id=57;
여기서 a 또는 b를 지정하여 해당 테이블 행을 삭제할 수 있습니다.
언급URL : https://stackoverflow.com/questions/1783784/sql-delete-rows-based-on-another-table
반응형
'programing' 카테고리의 다른 글
사용자 지정 게시물 유형에 대한 읽기 설정에 정적 페이지 추가 (0) | 2023.10.29 |
---|---|
Oracle SQL의 변수를 통한 시간 간격 전달 (0) | 2023.10.29 |
MySQL에서 부여 보기 (0) | 2023.10.24 |
MySQL의 대소문자 구분처럼 (0) | 2023.10.24 |
Mysql 데이터 유형 열거 열에 새 값 추가 (0) | 2023.10.24 |