MYSQL 从选项列表数组合并条件更新
MYSQL Consolidate Conditional Update from Picklist Array
我正在努力寻找使用 MYSQL 和 PHP 处理此代码的好方法。
我有 users
的 table 和 groups
的 table。每个用户将只属于一个组,或者属于组 0,(不在一个组中)。
我有一个管理编辑组页面,里面有 JS Picklist 插件。
它列出了组中的用户和不在组中的用户。
在此页面上提交表单时,我得到一组用户,这些用户是 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)
未经测试并从我的 phone 发布,但概念是存在的
我正在努力寻找使用 MYSQL 和 PHP 处理此代码的好方法。
我有 users
的 table 和 groups
的 table。每个用户将只属于一个组,或者属于组 0,(不在一个组中)。
我有一个管理编辑组页面,里面有 JS Picklist 插件。 它列出了组中的用户和不在组中的用户。 在此页面上提交表单时,我得到一组用户,这些用户是 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)
未经测试并从我的 phone 发布,但概念是存在的