我对SQL一点也不在行,所以它是这样的:
我有一个表,其中一列包含双精度数。我想选择它们之间的最大差值为'5‘的所有行。
我该怎么做呢?
id value
1 4955.54
2 2884.32
3 8485.45
4 4588.54
5 8487.62结果
id value
3 8485.45
5 8487.62我如何在mySQL中做到这一点?非常感谢!
发布于 2012-05-23 19:35:25
这是可行的,尽管您指的是最大差异而不是最小差异:
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
)发布于 2012-05-23 19:25:52
select id, value from table t1
inner join table t2 on t1.id <> t2.id
where ABS(t1.value-t2.value)<=5发布于 2012-05-23 19:25:01
如果值集很大,效率可能会很低。没有明显的方法可以有效地编写这个查询,但是下面是:
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 https://stackoverflow.com/questions/10718906
复制相似问题