mysql - 从SELECT子句的结果中选择符合条件的MYSQL5.7系列
问题描述
我想做的事
在MYSQL5.7系列中,我想从SELECT子句的结果中SELECT出满足条件的项目,但是无法选择。
我创建的代码
select
b_id
, created_at
, (select count(*)+1
from a
where b_id = x.b_id and created_at > x.created_at
) as n
from a as x
order by x.b_id, x.created_at desc
;
这段代码的结果
运行上面的代码会产生以下结果。我想修改上面的代码来计算数字 n=1 以获得以下结果,但我不确定如何。
b_id created_at n
1 20/07/18 22:47 1
2 20/03/24 06:08 1
5 20/08/30 19:25 1
6 20/08/29 14:53 2
6 20/08/27 00:00 3
我试过的
我认为可以通过如下方式在子查询中包含 select 子句并使用条件计算选择结果来获得它,但我做不到。
select
count(y.n = 1)
from(
select
b_id
, created_at
, (select count(*)+1
from a
where b_id = x.b_id and created_at > x.created_at
) as n
from a as x
order by x.b_id, x.created_at desc
) as y;
解决方案
表达的直接问题count(y.n = 1)
。条件返回一个0
or 1
,这两个都被计算 -只count()
忽略null
值。你可以sum(y.n - 1)
改用。
我不确定查询的目的。基本上这b_id
按降序排列具有相同的记录 - 那么你想计算有多少记录排在第一位?b_id
这相当于只计算表中存在多少 distinct 。如果是这样,您可以简单地将其表述为:
select count(distinct b_id)
from a
推荐阅读
- python - 我过滤素数的功能是打印重复项,我该如何解决?
- html - has-popup="true" on
- 还是?
- angular - 使用 For 循环的 Angular Firebase 复选框
- html - 为什么在我的 div 元素之前有一个随机间隙?
- python-3.x - 如何在其中一个子图中绘制箭头?
- css - 如何在 LWC 系统中包含全局样式
- python - 每次运行时分类报告都会发生变化
- arrays - 如何在二维数组的范围内使用 flatMap() 和 reduce()
- excel - 从数据透视表命名 showdetail 工作表时嵌套 For Loop 出牙问题
- python - Python opencv +烧瓶,VideoCamera打开但不显示视频源