行之间的最大差异

时间:2012-05-23 11:22:39

标签: sql

我根本不熟悉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中做到这一点? 非常感谢!

3 个答案:

答案 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