I’m trying to delete orphan entries in a mysql table.
I have 2 tables like this:
Table files:
| id | …. |
|---|---|
| 1 | …. |
| 2 | …. |
| 7 | …. |
| 9 | …. |
table blob:
| fileid | …. |
|---|---|
| 1 | …. |
| 2 | …. |
| 3 | …. |
| 4 | …. |
| 4 | …. |
| 4 | …. |
| 9 | …. |
The fileid and id columns can be used to join the tables together.
I want to delete all rows in table blob where fileid cannot be found in the table files.id.
So using the example above that would delete rows: 3 & 4(s) in the blob table.
Using LEFT JOIN/IS NULL:
Using NOT EXISTS:
Using NOT IN:
Warning
Whenever possible, perform DELETEs within a transaction (assuming supported – IE: Not on MyISAM) so you can use rollback to revert changes in case of problems.