반응형
ID가 일치하지 않는 SQL 행을 다른 테이블에서 삭제합니다.
mysql 테이블에서 고아 항목을 삭제하려고 합니다.
다음과 같은 테이블이 두 개 있습니다.
테이블files
:
| id | ....
------------
| 1 | ....
| 2 | ....
| 7 | ....
| 9 | ....
테이블blob
:
| fileid | ....
------------
| 1 | ....
| 2 | ....
| 3 | ....
| 4 | ....
| 4 | ....
| 4 | ....
| 9 | ....
그fileid
그리고.id
열을 사용하여 테이블을 결합할 수 있습니다.
테이블의 모든 행을 삭제하고 싶다blob
어디에fileid
표에서 찾을 수 없다files.id
.
따라서 위의 예제를 사용하면 행이 삭제됩니다.blob
테이블.
LEFT JOIN/IS NULL 사용:
DELETE b FROM BLOB b
LEFT JOIN FILES f ON f.id = b.fileid
WHERE f.id IS NULL
존재하지 않는 사용:
DELETE FROM BLOB
WHERE NOT EXISTS(SELECT NULL
FROM FILES f
WHERE f.id = fileid)
사용 안 함:
DELETE FROM BLOB
WHERE fileid NOT IN (SELECT f.id
FROM FILES f)
경고
가능한 한 트랜잭션 내에서 DELETE를 실행합니다(지원 대상인 IE: MyISAM이 아닌 경우).이것에 의해, 문제가 발생했을 경우에 롤백을 사용해 변경을 되돌릴 수 있습니다.
DELETE FROM blob
WHERE fileid NOT IN
(SELECT id
FROM files
WHERE id is NOT NULL/*This line is unlikely to be needed
but using NOT IN...*/
)
DELETE FROM blob
WHERE NOT EXISTS (
SELECT *
FROM files
WHERE id=blob.id
)
DELETE FROM <table>
WHERE <row column you want to delete by > not in
(select <column you want to compare other column> from <other table>)
그러면 첫 번째 열이 두 번째 테이블에 나타나지 않을 때 행이 삭제됩니다.
언급URL : https://stackoverflow.com/questions/3384127/delete-sql-rows-where-ids-do-not-have-a-match-from-another-table
반응형
'programing' 카테고리의 다른 글
php.ini: 어떤 거요? (0) | 2022.11.07 |
---|---|
PHMailer로 이메일 보내기 - 이미지를 본문에 포함 (0) | 2022.11.07 |
Calendar.getInstance(TimeZone.getTimeZone("UTC")))가 UTC 시간을 반환하지 않습니다. (0) | 2022.11.07 |
IntelliJ IDEA의 잘못된 Manifest.mf가 .jar를 만들었습니다. (0) | 2022.11.07 |
JavaScript - 키 값 쌍에 대한 루프 내 (0) | 2022.11.07 |