php - MYSQL 合并来自 Picklist 数组的条件更新

标签 php mysql mysqli picklist

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

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

所以我需要做两件事:

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

  2. 确保返回数组中的所有用户都更新了组 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)

未经测试并通过我的手机发布,但概念就在那里

关于php - MYSQL 合并来自 Picklist 数组的条件更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44751988/

相关文章:

mysql - SQL 条件聚合函数

javascript - 如何使用 ng-value 在 MySQL 中发布用户 ID

PHP/MySQL 在某些查询中没有返回结果

php - 使用 SQL 更新了 1 列中的 2 个值

php - MySQLi LEFT JOIN 查询抛出语法错误

php - 在 Yii2 的 Gridview 中找不到类 'CHtml'

php - SSL 证书因根用户而异

php - pdo_mysql 在 centos 6.7 上不可用

php - 在显示图像之前检查文件是否存在?

javascript - 时间不会在带有日期时间选择器的文本字段中显示时间