我根本不熟悉SQL,所以在这里:
我有一个包含双打的列的表。 我想选择它们之间的最大差异为'5'的所有行。
我该怎么做?
id value
1 4955.54
2 2884.32
3 8485.45
4 4588.54
5 8487.62
RESULT
id value
3 8485.45
5 8487.62
我怎样才能在mySQL中做到这一点? 非常感谢!
答案 0 :(得分:2)
select id, value from table t1
inner join table t2 on t1.id <> t2.id
where ABS(t1.value-t2.value)<=5
答案 1 :(得分:2)
虽然你的意思是最大而不是最小差异,但这是有效的:
SELECT v.id, v.value
FROM Values v
WHERE EXISTS(
SELECT null from Values v2
WHERE v2.id <> v.id and
ABS(v2.value - v.value) BETWEEN 0 AND 5
)
答案 2 :(得分:1)
如果值集很大,则可能效率低下。没有明显的方法可以有效地编写这个查询,但是这里有:
select lo.val
, hi.val
from numbers lo
inner join numbers hi
on hi.val - lo.val >= 5
如果val列已编入索引,则可能有助于添加其他条件,如下所示:
select lo.val
, hi.val
from numbers lo
inner join numbers hi
on hi.val > lo.val
where hi.val - lo.val >= 5