2017-06-07 75 views
0

我使用Python和MySQL和我有如下表:MySQL的選擇多行幾乎相同的值

id name value1 value2 
1  a  36041  140636 
2  b  36046  140647 
3  c  36042  140642 
4  d  36042  140645 
5  e  36040  140642 

我要選擇那些具有幾乎相同的值1和值2(±2)行。所以根據上面的表格,我只想選擇第3行和第5行,並按照value1的升序排列它們。我應該如何爲此編寫SELECT查詢?

回答

1

的一種方法,通過使用自聯接來實現這一點:

select t1.* 
from table1 t1 
join table1 t2 
on abs(t1.value1 - t2.value1) <= 2 
and abs(t1.value2 - t2.value2) <= 2 
and t1.id <> t2.id 
order by t1.value1 

而看到demo在Rextester。

1

我想你想自連接:

select t1.*, t2.* 
from t t1 join 
    t t2 
    on abs(t1.value1 - t2.value1) <= 2 and 
     abs(t1.value2 - t2.value2) <= 2 and 
     t1.id < t2.id 
order by t1.value1 
+0

應該t2.value1而不是t2.value21 – Ank

+0

@Ank。 。 。謝謝。 –