sql查询语句怎么写????

根据一个相同编号查询出这个编号支付过的所有订单,然后需要获取到原订单的上一个订单的支付时间。举例,有1,2,3,三个订单,然后里面的订单编号不相同,record编号相同,根据record编号查出所有订单,订单3需要订单2的支付时间,订单2需要订单1的支付时间,求大神帮忙指教sql语句怎么写

sql

5个回答

图片说明这个是表结构
图片说明这个是查询结果

SELECT * FROM (SELECT t.* ,t1.createtime lastcreate FROM test t LEFT JOIN test t1 ON t1.recordid = t.recordid AND  t.createtime > t1.createtime ORDER BY t.id,t1.createtime DESC ) t2 GROUP BY t2.id 

这个查询语句mysql的
可以懂吗 结果为null的就是订单1

qshazi
土豆_ 回复qq_42445502: 18710150625
大约一年之前 回复
qq_42445502
qq_42445502 回复qshazi: 老哥 可以加微信交流吗??
大约一年之前 回复
qshazi
土豆_ 回复qq_42445502: mysql的这个是
大约一年之前 回复
qshazi
土豆_ 回复qq_42445502: SELECT * FROM (SELECT t.* ,t1.createtime lastcreate FROM test t LEFT JOIN test t1 ON t1.recordid = t.recordid AND t.createtime > t1.createtime ORDER BY t.id,t1.createtime DESC ) t2 GROUP BY t2.id
大约一年之前 回复
qq_42445502
qq_42445502 老哥 还是有点不明白啊。
大约一年之前 回复

查出相同record比该订单时间早的一条第一条数据。。。

qq_24329545
qq_24329545 回复qq_42445502: select * from table where record in(select record from table where dingdannum='1') AND date < (select date from table where dingdannum='1') LIMIT 1 我大致写了一下,你可以试试。。
大约一年之前 回复
qq_42445502
qq_42445502 不知道怎么写sql语句了啊。
大约一年之前 回复

sql不难。最简单的连接查询用rownum来展示就行,关键是以什么确定数据123的顺序呢。

ainiburuqusi
ainiburuqusi 回复qq_42445502: SELECT * FROM (SELECT ROWNUM AS RW ,T.* FROM TABLE_NAME T WHEHE T.订单ID = ‘1’) T1 ,(SELECT ROWNUM AS RW, T.* FROM TABLE_NAME T WHEHE T.订单ID = ‘1’) T2 WHERE T1.RW =T2.RW+1;这样写比较复杂,但是逻辑很明确。
大约一年之前 回复
qq_42445502
qq_42445502 根据订单id啊。
大约一年之前 回复

select 支付时间 from tablename where 订单id = (select max(订单id) from tablename where 订单id < (select max(订单id) from tableName where record = '编号' ) and record='编号')
不知道你是不是要最大的订单号 的上一个订单号的支付时间

qq_42445502
qq_42445502 嗯对 是的。
大约一年之前 回复

oracle里就简单了,用lag窗口函数即可:
select 订单id,订单信息,lag(支付时间,1) over(partition by record编号 order by 支付时间) 上一订单的支付时间
from 表
where record编号=&record编号

qq_42445502
qq_42445502 不是oracle,是mysql啊。
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问