我的数据库中有两个表:
表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中最简单的方法是什么?感谢。
答案 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;