首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sql查询在多个表PostgreSQL中删除属于用户的行

问sql查询在多个表PostgreSQL中删除属于用户的行
EN

Stack Overflow用户
提问于 2020-05-23 21:48:18
回答 2查看 68关注 0票数 0

我有三张桌子

代码语言:javascript
复制
dragons
id, name, age, creation_date
代码语言:javascript
复制
users
id, name, user, pass
代码语言:javascript
复制
users_dragons
user_id, dragon_id

其思想是使用多对多表执行一个查询,该查询从Drag表中删除年龄低于给定用户且属于给定用户的行。我打算使用exist语句,但我对SQL还不是很了解。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-23 22:09:47

代码语言:javascript
复制
delete from dragons where id in (
select d.id from dragons d, users u, users_dragons ud where d.age < :YourGivenAge and ud.dragon_id = d.id and ud.user_id in (
select id from users where name = :YourGivenName ));

对于级联删除,只需存储id,并从dragon_id = stored id所在的users_dragons表中第一次删除

票数 0
EN

Stack Overflow用户

发布于 2020-05-23 22:14:19

我倾向于建议:

代码语言:javascript
复制
delete from dragons d
    where d.age < :age and
          exists (select 1
                  from users_dragons ud
                  where ud.dragon_id = d.id and ud.user_id = :user_id
                 );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61973001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档