gpt4 book ai didi

Mysql:按条件分组

转载 作者:行者123 更新时间:2023-11-29 16:45:51 25 4
gpt4 key购买 nike

我已经搜索了我的问题,但我无法真正找到我正在寻找的内容,或者也许我只是不理解这些示例。如果有类似的帖子,请指出我正确的主题。

我想要做的事情如下:我得到了如下表所示的结果,这是我通过一个非常简单的查询生成的:

SELECT id, first_name, last_name, email, roles, created 
FROM user

正如您所看到的,用户可以有两个角色:用户或教师。有些人只是老师,有些人只是使用者。然而,他们中的一些人既是教师又是使用者。现在我想按电子邮件地址进行分组,但这当然不适用于既是用户又是教师的人。我想通过电子邮件进行分组,如果一个人同时具有这两种角色,我想在结果中保留用户角色。我知道这可以通过 if 条件来完成,但我不知道在哪里或如何做到这一点。

+------+------------+-----------+-----------------------+--------------+
| id | first_name | last_name | email | roles |
+------+------------+-----------+-----------------------+--------------+
| 9798 | person | one | personOne@gmail.com | ROLE_USER |
| 9800 | person | one | personOne@gmail.com | ROLE_TEACHER |
| 9801 | person | two | personTwo@gmail.com | ROLE_TEACHER |
| 9802 | person | three | personThree@gmail.com | ROLE_TEACHER |
| 9803 | person | four | personFour@gmail.com | ROLE_USER |
+------+------------+-----------+-----------------------+--------------+

所以我的查询应该是这样的:

SELECT id, first_name, last_name, email, roles, created 
FROM user
group by email (if count(email) > 1 "ROLE_USER from roles should end up in results")

有人能给我指出正确的方向或举个例子吗?非常感谢!

最佳答案

如果只有 2 个角色,您可以

select * from t where roles = 'role_user'
union
select * from t where roles = 'role_teacher' and
((select count(*) from t t1 where t1.email = t.email) = 1)
order by id;

+------+------------+-----------+-----------------------+--------------+
| id | first_name | last_name | email | roles |
+------+------------+-----------+-----------------------+--------------+
| 9798 | person | one | personOne@gmail.com | ROLE_USER |
| 9801 | person | two | personTwo@gmail.com | ROLE_TEACHER |
| 9802 | person | three | personThree@gmail.com | ROLE_TEACHER |
| 9803 | person | four | personFour@gmail.com | ROLE_USER |
+------+------------+-----------+-----------------------+--------------+
4 rows in set (0.03 sec)

但是,如果电子邮件中存在重复的角色,则此方法将不起作用。

关于Mysql:按条件分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53116836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com