我有一个表,其中包含这样的作业
id owner collaborator privilege
90 "919886297050" "919886212378" "read"
90 "919886297050" "919886297052" "read"
88 "919886297050" "919886212378" "read"
88 "919886297050" "919886297052" "read"主键是id、所有者和协作者的组合,我只想传递我想要保留的协作者的详细信息。例如,如果我的协作者= "919886212378“,这意味着我想删除"919886297052”的行,并保留"919886212378“的行。
有没有办法在一次查询/执行中做到这一点,而不是单独获取详细信息,然后在过滤缺少的值后执行删除?
编辑:我的用例可能添加了新的协作者,删除了旧的协作者。但是,我的输入将只有一组选定的协作者,因此我需要与旧列表交叉检查,保留现有的,添加新的和删除丢失的协作者。
发布于 2018-06-18 20:37:41
DELETE FROM table WHERE collaborator NOT IN ("919886212378", "id ..")针对您提到的特定情况执行删除操作。但我不知道你是怎么弄到这些身份证的。你提供的信息太少了。如果您可以通过查询获得这些id,则可以将其作为子查询,如下所示:
DELETE FROM table WHERE collaborator NOT IN (SELECT ... FROM ...)发布于 2018-06-21 14:13:13
比较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语句进行更新。
https://stackoverflow.com/questions/50909519
复制相似问题