gpt4 book ai didi

Mysql SELECT COUNT(COLUMN) 带条件

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

我有一个包含一些数据的表

id      group_id    f1    f2    f3
1 1 a b
2 1 c
3 2 a c

如何为满足某些文本条件的每个字段检索具有 group_id 和行数的一行?

像那样:

MY_MAGIC_SELECT(`f1`='a',`f3`='c');

必须返回

group_id    f1    f2    f3
1 1 0 0
2 1 0 1

最佳答案

使用一系列 SUM(CASE...) 聚合函数来表示您的每个条件应该做到这一点。如果条件匹配,CASE 返回 0 或 1,SUM() 将结果相加。 GROUP BY 应用于 group_id

SELECT
group_id
SUM(CASE WHEN f1 = 'a' THEN 1 ELSE 0 END) AS f1,
SUM(CASE WHEN f2 = 'b' THEN 1 ELSE 0 END) AS f2,
/* f3 = 'b' isn't in your "magic select" but here it is anyway... */
SUM(CASE WHEN f3 = 'c' THEN 1 ELSE 0 END) AS f3
FROM
yourtable
GROUP BY group_id

特别是对于 MySQL,你不需要 CASE 因为 bool 表达式 f1 = 'a' 本身会返回 1 或 0。所以你可以简化它到下面的例子。但是,这不能移植到任何 RDBMS。

SELECT
group_id
SUM(f1 = 'a') AS f1,
SUM(f2 = 'b') AS f2,
SUM(f3 = 'c') AS f3
FROM
yourtable
GROUP BY group_id

Here is a quick demonstration on SQLfiddle.com

关于Mysql SELECT COUNT(COLUMN) 带条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13662801/

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