gpt4 book ai didi

mysql - 如何根据具有特定列值的行数在 GROUP BY 中添加条件?

转载 作者:行者123 更新时间:2023-11-28 23:30:57 27 4
gpt4 key购买 nike

我有这张表:

-------------------------
| id | user_id | status |
-------------------------
| 1 | 1 | 1 |
-------------------------
| 2 | 1 | 0 |
-------------------------
| 3 | 1 | 1 |
-------------------------
| 4 | 2 | 1 |
-------------------------
| 5 | 2 | 0 |
-------------------------

基本上我想选择所有用户(显然按 user_id 分组),其中 1 状态的数量和 0 的数量状态不一样。对于上面的示例数据,它只会返回 user_id 1,因为用户 1 有 2 个 1 状态和 1 个 0 状态。它不会返回我 user_id 2,因为用户 2 为 1 1 状态,和 1 0 状态,有效地相互抵消。

我在想一些条件允许我在条件下使用 COUNT,但我不确定如何做到这一点。

最佳答案

您需要将 HAVING() 子句与 CASE EXPRESSION 一起使用

SELECT t.user_id
FROM YourTable t
GROUP BY t.user_id
HAVING COUNT(CASE WHEN t.status = 1 THEN 1 END) <>
COUNT(CASE WHEN t.status = 0 THEN 1 END)

这将基本上检查每个组,status = 1 的计数与 status = 0 的计数不同

MySQL 允许 bool 表达式,所以 HAVING() 子句可以写成:

HAVING sum(t.status = 1) <> sum(t.status = 0)

关于mysql - 如何根据具有特定列值的行数在 GROUP BY 中添加条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37374274/

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