我有一个用户表和一个图像表。
用户只有一张图片。
图像可以属于许多用户。
我正在努力做到这一点,以便在删除用户时删除其图像,但前提是没有其他用户在使用该图像。
我曾尝试在删除级联上使用,但是它只能与Im尝试实现的方式相反-当您删除图片时,用户将被删除。
Users:
id | name | image_id
Images:
id | url
答案 0 :(得分:1)
您可以使用
查找未使用的图像 select i.id, i.url
from images i
left join users u on u.image_id = i.id
where image_id is null
并删除
delete i.*
from images i
inner join (
select i.id
from images i
left join users u on u.image_id = i.id
where image_id is null
) t on t.id = i.id
如果您遇到与select中所涉及的删除行有关的问题,则
delete i.*
from images i
inner join (
select id
from (
select i.id
from images i
left join users u on u.image_id = i.id
where image_id is null
) t1
) t on t.id = i.id
答案 1 :(得分:0)
如果您可以使用单独的查询执行此清理操作,那么它将起作用
DELETE FROM Images WHERE id NOT IN (SELECT image_id FROM Users);