gpt4 book ai didi

mysql - SQL计算特定范围内的行数

转载 作者:太空宇宙 更新时间:2023-11-03 11:39:18 24 4
gpt4 key购买 nike

我的数据库中有两个表:

表A

Column_A1 column_A2
A1 10
A2 20
A3 30

表B

Column_B1 column_B2
B1 11
B2 21
B3 31
B4 29
B5 30.5

我想计算表B有多少行符合以下条件:

范围:A1±1,A2±1,A3±1,...

例如:

B1∈[A1-1,A1+1]
统计这些行,返回值1。

B2∈[A2-1,A2+1]
统计这些行,返回值1。

B3∈[A3-1,A3+1]
B4∈[A3-1,A3+1]
B5∈[A3-1,A3+1]
统计这些行,返回值 3。

结果应该是这样的:

Column_A1 column_A2 num_match
A1 10 1
A2 20 1
A3 30 3

在其他编程语言中使用循环很容易做到这一点,但在 SQL 中最简单的方法是什么?谢谢。

最佳答案

我会用相关的子查询来做到这一点:

select a.*,
(select count(*)
from b
where b.column_b2 between a.column_a2 - 1 and a.column_a2 + 1
) as num_match
from a;

备注:between用于表示边界包含在范围内。如果这不是本意,则使用显式 <>逻辑。

许多数据库将能够利用 b(column_b2) 上的索引对于这个查询。您可以在 MySQL 上进行测试,看看是否是这种情况。

关于mysql - SQL计算特定范围内的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43257750/

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