我正在尝试删除mysql表中的孤立条目.
我有2个这样的表:
表files:
| id | ....
------------
| 1 | ....
| 2 | ....
| 7 | ....
| 9 | ....
Run Code Online (Sandbox Code Playgroud)
表blob:
| fileid | ....
------------
| 1 | ....
| 2 | ....
| 3 | ....
| 4 | ....
| 4 | ....
| 4 | ....
| 9 | ....
Run Code Online (Sandbox Code Playgroud)
该fileid和id列可以被用来连接表在一起.
我想删除表blob中fileid无法找到的表中的所有行files.id.
因此,使用上面的示例将删除表中的行:3和4(s)blob.
OMG*_*ies 297
DELETE b FROM BLOB b
LEFT JOIN FILES f ON f.id = b.fileid
WHERE f.id IS NULL
Run Code Online (Sandbox Code Playgroud)
DELETE FROM BLOB
WHERE NOT EXISTS(SELECT NULL
FROM FILES f
WHERE f.id = fileid)
Run Code Online (Sandbox Code Playgroud)
DELETE FROM BLOB
WHERE fileid NOT IN (SELECT f.id
FROM FILES f)
Run Code Online (Sandbox Code Playgroud)
只要有可能,在事务中执行DELETE(假设支持 - IE:不在MyISAM上),这样您就可以使用回滚来恢复出现问题时的更改.
Mar*_*ith 26
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...*/
)
Run Code Online (Sandbox Code Playgroud)
Geo*_*rge 16
DELETE FROM blob
WHERE NOT EXISTS (
SELECT *
FROM files
WHERE id=blob.id
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
135840 次 |
| 最近记录: |