MySQL 将组合并到单个表中

标签 mysql

我正在尝试编写基于单个表检查组成员资格的语法。我的用户多次出现在表中(即多行),因此我的数据可能如下所示:

user      region     field1
----      ------     ------
282       10         38
282       10         128
464       3          57

等等

我需要的是这样的语法:“A 组 = 区域 10 以及 FIELD1 列中的任意这些数字 - 38, 79, 126。然后 B 组 = 区域 10 以及 FIELD1 列中的任意这些数字 - 80,128”

现在,正如您从我的示例中看到的,用户 282 将被视为属于 A 组和 B 组。最终,我希望找出这两个组中都有哪些人。我执行了 GROUP_CONCAT 来显示它们位于同一组中,但如何对它们进行计数甚至过滤“组”?

最佳答案

使用自连接:

SELECT DISTINCT t1.user
FROM MyTable t1
JOIN MyTable t2 USING (user)
WHERE t1.region = 10 AND t1.field1 IN (38, 79, 126)
AND t2.region = 10 AND t2.field1 IN (80, 126)

关于MySQL 将组合并到单个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14634510/

相关文章:

mysql - 在MySQL中使用IF语句在没有存储过程的情况下更新或插入?

MySQL:从 double 转换为十进制时精度损失

java - 从结果集中获取时间戳

mysql - SQL - 有什么方法可以简单计算吗?

php - 状态和分页的mysql问题

mysql - 在 Workbench EER 图中创建 MySQL 事件

java - jOOQ代码生成器

mysql - 如何在两个子查询中使用分组依据并对行数求和?

php - jQuery/PHP 隐藏 Div,从 MySQL 更新信息,显示 Div 新信息

mysql - 我怎样才能替换空值?