MYSQL从Picklist Array合并条件更新

时间:2017-06-26 01:11:16

标签: php mysql mysqli picklist

我正在努力寻找使用MYSQL和PHP来处理此代码的好方法。 我有一张users表和一张groups表。每个用户只属于一个组,或属于组0(不在组中)。

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

所以我需要做两件事:

  1. 从当前位于该组中但不在表单返回的数组中的任何用户中删除组ID。

  2. 确保返回的数组中的所有用户都更新了组ID。

  3. 对于此示例,我的组ID为25,在提交表单后,该组中有两个用户(44和45)。没有其他用户应该留在该组中。但如果其他用户位于不同的组中,例如30,则也不应修改它们。  我可以有几百个用户,虽然性能不是最大的问题,但对我来说只是感觉有些骚动。

    这是我迄今为止失败的原因。出于性能原因,我们说的可能是300个用户,所以没什么大不了的。这两个查询确实按预期工作,看起来非常h​​ackish。必须是一个更好的方法,在这里学习!

    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 )
    

    谢谢!

1 个答案:

答案 0 :(得分:1)

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)

未经测试并从我的手机发布但概念已经存在