sql 一个绝对难的sql语句???

来源:百度知道 编辑:UC知道 时间:2024/06/04 05:40:26
我想按照我数据库里面的时间字段进行查询,查询条件是从第一条数据时间开始,后面每一条数据只要在前面的基础上>=30(这30是变量),查询数据库中的所有数据,把对应的数据库信息全部查询出来。
如:表:datetimes
数据
ID 日期
1 1234338000
2 1234338032
3 1234338055
4 1234338060
5 1234338093
6 1234338097
7 1234338130
把这张表里面ID为:1,2 ,4,5,7 的时间都查询出来,给出sql语句。

注意:不是把每个ID对应的时间加上一个量,也不是每个ID对应的是时间乘以一个量,是不改变数据库里面的数据。查询所有数据。

数据库Access

这个够难的吧!!
从第一个开始,ID 5 与 ID 6只相差4所以继续判断后面的条件,把ID 6的抛掉 ID 7符合条件,把ID 7 去出来啊!
如: 第一条(one),第二条(two),第三条(three),第四条(four),第五条(five)......
two >= one + 30, three >= two + 30, four >= three + 30, five >= four +30这样的判断,只要中间一个判断不符合要求就跳过,但是必须以上一条(符合条件的那条)继续判断,直到所有数据完成。
如:
two >= one + 30, three >= two + 30, 如果 four < three 不符合条件那 five >= three去判断符合取出不符合继续拿six>=three判断。。。。。

ID 是数字类型的,上面数据表以给出
我用的是Access不支持@符合的,access不支持变量

在加20分

badkano 你说的对,ID 4不应该查出来。

select id,日期 from datetimes where id=1 union all
select id,日期 from datetimes where id in
(select id from(select a.id+1 id,(b.日期-a.日期) as 日期 from datetimes a , datetimes b
where b.id-a.id=1) where 日期>=30)

还有,你上边给的结果是错的id=4的不应该被选出来

不难, 告诉你思路吧 , 把一个表当2个表看, 进行join
得到以下的数据集, 然后再进行判断

2 1234338032 1 1234338000
3 1234338055 2 1234338032
4 1234338060 3 1234338055
5 1234338093 4 1234338060
6 1234338097 5 1234338093
7 1234338130 6 1234338097

=========================================

select a.id, a.日期, b.id, b.日期
from datetime a inner join datetime b
on a.id -1 = b.id
where a.日期 - b.日期 > 30

如果id 不是数字类型的, 就进行一下转换,
如果是纯字符类型的,比如 abcd 这样的, 就不好弄了 呵呵。

access下没法弄
放oracle下就好了

等你想好SQL,还不如改成在逻辑层判断快

做循环判断把查到的数据插入一个表中
然后再找插入后的一表

直接我不知道怎么写