删除ID与另一个表不匹配的SQL行

我正在尝试删除mysql表中的孤立条目。

我有2张桌子,像这样:

files

| id | ....

------------

| 1 | ....

| 2 | ....

| 7 | ....

| 9 | ....

blob

| fileid | ....

------------

| 1 | ....

| 2 | ....

| 3 | ....

| 4 | ....

| 4 | ....

| 4 | ....

| 9 | ....

fileidid列可以被用来连接表在一起。

我想删除表blob中所有在表中fileid找不到的行files.id

因此,使用上面的示例将删除表中的行:3&4(s)blob

回答:

回答:

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上),以便在出现问题时可以使用回滚来还原更改。

以上是 删除ID与另一个表不匹配的SQL行 的全部内容, 来源链接: utcz.com/qa/403599.html

回到顶部