我的数据库中有两个表:
表 A
Column_A1 column_A2
A1 10
A2 20
A3 30
表 B
Column_B1 column_B2
B1 11
B2 21
B3 31
B4 29
我想计算表 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]
对这些行进行计数,返回值 2。
结果应该是这样的:
Column_A1 column_A2 num_match
A1 10 1
A2 20 1
A3 30 2
在其他编程语言中使用循环来执行此操作很容易,但是在MySQL中执行此操作的最简单方法是什么?谢谢。
尝试如下:
SELECT table_a.Column_A1, table_a.Column_A2, count(table_b.Column_B2) as num_match
FROM table_a
LEFT JOIN (SELECT * FROM table_b) AS table_b
ON table_a.Column_A2 = table_b.Column_B2 - 1 OR table_a.Column_A2 = table_b.Column_B2 + 1;