programing

SQL 다른 테이블을 기준으로 행 삭제

instargram 2023. 10. 29. 18:59
반응형

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

반응형