仅保留opg2中的特定行

2024-09-25 10:34:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一张桌子,里面有这样的工作

id   owner          collaborator    privilege 
90  "919886297050"  "919886212378"  "read"
90  "919886297050"  "919886297052"  "read"
88  "919886297050"  "919886212378"  "read"
88  "919886297050"  "919886297052"  "read"

主键是id、所有者和合作者的组合 我只想传递我想保留的合作者的详细信息。例如,如果my collaborator=“919886212378”,则表示要删除“919886297052”的行并保留“919886212378”的行

有没有一种方法可以在一次查询/执行中实现这一点,而不是单独获取细节,然后在过滤缺少的值之后执行删除

编辑:我的用例可能添加了新的协作者,删除了旧的协作者。但是,我的输入将只有一组选定的协作者,因此我需要与旧列表交叉检查,保留现有的,添加新的和删除丢失的协作者


Tags: 方法id编辑readmy详细信息用例细节
2条回答
DELETE FROM table WHERE collaborator NOT IN ("919886212378", "id ..")

删除你提到的具体案例。但我不知道 你怎么拿到这些身份证的。关于你的案件你提供的信息太少了。 如果可以通过查询获取这些id,则可以将其作为子查询,如:

DELETE FROM table WHERE collaborator NOT IN (SELECT ... FROM ...)

在python中比较新旧协作者列表对我来说有点困难

    original_list = ["C1","C2","C3","C4"] // result from query
    updated_list= ["C1","C6","C7"] // list obtained from request


    # compute the differences   
    to_be_added  = set(updated_list).difference(set(original_list) )
    to_be_deleted  = set(original_list).difference(set(updated_list) )

然后我在事务中使用insert和delete语句,使用上面两个列表进行更新

相关问题 更多 >