gpt4 book ai didi

mysql - 计算多行中具有特定值的行数

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

很难设置一个合适的标题,因为我不知道如何描述我的问题。

我有一个这样的表:

dlID | dl_seID | dlEpisode | dlFlag
___________________________________
1 | 1 | 1 | 0
2 | 1 | 2 | 1
3 | 1 | 3 | 1
4 | 2 | 1 | 1
5 | 2 | 2 | 0
6 | 3 | 1 | 0

我想要的是一个选择查询,我得到这样的结果:

dlID | dl_seID | dlEpisode | dlFlag | dlFlagCount
_________________________________________________
1 | 1 | 1 | 0 | 2
2 | 1 | 2 | 1 | 2
3 | 1 | 3 | 1 | 2
4 | 2 | 1 | 1 | 1
5 | 2 | 2 | 0 | 1
6 | 3 | 1 | 0 | 0

dlFlagCount 应该是 dlFlag = 1 的计数器,其中 dl_seID = dl_seID。

第二次尝试:我需要一个值来查看有多少个具有相同 dl_seID 且值为 1 的 Flag。

这可能吗?

希望你们知道我想要什么^^

问候

最佳答案

试试这个:

select 
a.*,
ifnull(b.ctflags,0)
from
tablea a left join
( select dl_seID, count(dlFlag) ctflags
from tablea
where dlFlag=1
group by dl_seID ) b on (a.dl_seID = b.dl_seID)

左连接只是为了获取标志为0的注册表

参见 fiddle :http://sqlfiddle.com/#!2/ef9b0/5

编辑:由于 op 要求一些解释,这里是:

您要求的是按 dl_seID 计算标志数量,为此,您需要将问题分开,首先获得 dl_seID 的计数code> by flags,这是这个子查询:

   select dl_seID, count(dlFlag) ctflags 
from tablea
where dlFlag=1
group by dl_seID

这成为一个“单独的表”或一组新的数据,无论你想怎么调用它。然后,您必须将其与原始数据(来自表)连接起来,例如答案查询。

左连接部分是因为也许有些数据不会提示 where dlFlag=1 因此,如果你想将 then 作为 0 你必须带上所有我们创建的子组中存在或不存在的表中的值。这个 ifnull(b.ctflags,0) 用于这些数据数据存在于您的表中但没有标志(针对您的问题)。如果您只使用 b.ctflags 它将带来 null。

关于mysql - 计算多行中具有特定值的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20072297/

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