MySQL计算特定条件下的行数:范围从A±1

时间:2017-04-06 08:22:58

标签: mysql

我的数据库中有两个表:

表A

End of data reached before content length was read: 70385664/77217546

表B

Column_A1 column_A2
 A1         10
 A2         20
 A3         30

我想计算表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_B1 column_B2
 B1         11
 B2         21
 B3         31
 B4         29

在其他编程语言中使用循环很容易,但是在MySQL中最简单的方法是什么?感谢。

1 个答案:

答案 0 :(得分:1)

试试这样:

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;