Php MYSQL整合来自Picklist数组的条件更新

Php MYSQL整合来自Picklist数组的条件更新,php,mysql,mysqli,picklist,Php,Mysql,Mysqli,Picklist,我正在努力寻找一种好方法,用MYSQL和PHP来处理这段代码。 我有一个用户表和一个组表。每个用户将只属于一个组,或者将属于组0(不在组中) 我有一个管理编辑组页面,里面有JS选择列表插件。 它列出了组中的用户和不在组中的用户。 在这个页面上提交表单时,我得到了一个用户数组,这些用户是sql查询之后应该在组中的唯一用户 所以我需要做两件事: 从当前在组中但不在表单返回的数组中的任何用户中删除组id 确保返回的数组中的所有用户都更新了组id 对于本例,我的组ID为25,提交表单后,该组中有两个用户

我正在努力寻找一种好方法,用MYSQL和PHP来处理这段代码。 我有一个
用户表
和一个
组表
。每个用户将只属于一个组,或者将属于组0(不在组中)

我有一个管理编辑组页面,里面有JS选择列表插件。 它列出了组中的用户和不在组中的用户。 在这个页面上提交表单时,我得到了一个用户数组,这些用户是sql查询之后应该在组中的唯一用户

所以我需要做两件事:

  • 从当前在组中但不在表单返回的数组中的任何用户中删除组id

  • 确保返回的数组中的所有用户都更新了组id

  • 对于本例,我的组ID为25,提交表单后,该组中有两个用户(44和45)。其他用户不应留在该组中。但是,如果其他用户属于不同的组(如30),则也不应修改它们。 我可能有几百个用户,虽然性能不是最重要的问题,但我觉得它有点不成熟

    这就是我到目前为止失败的地方。出于性能方面的原因,我们讨论的可能是300个用户,所以没有什么大不了的。这两个查询确实像预期的那样工作,只是看起来非常粗糙。一定是更好的方式,在这里学习

    update users set user_group = 0 where (user_group = 25 AND uid != 45) AND (user_group = 25 AND uid != 44)
    
    update users set user_group = 25 where ( uid = 44 OR uid = 45 )
    
    谢谢

    UPDATE users 
    SET user_group = CASE 
      WHEN uid IN (...ids from post) THEN $group_id
      ELSE 0
     END
    WHERE user_group = $group_id OR uid IN (...ids from post)
    

    未经测试并从我的手机中发布,但除了在查询中使用
    IN()
    NOT IN()
    之外,概念还在那里。可通过内爆阵列填充的内容。这看起来很好,因为它已经工作了,所以不仅仅是一个概念——非常感谢。