求如何用mysql实现计算上下两条记录的差

方法挺多的,很多是采用排序直接对等连接,这样对于主键聚集索引比较快的。--- 我提供的不是排序对等 方式,而是大范围连接检索最小距离的方式。SELECT A.FID,A.Fnum,MIN(A.Fid-B.Fid)as 差值 FROM test.cte A INNER JOIN test.cte B on(A.FID>B.FID)GROUP BY A.FID,A.Fnum ORDER BY ...
求如何用mysql实现计算上下两条记录的差
方法挺多的,很多是采用排序直接对等连接,这样对于主键聚集索引比较快的。
----
我提供的不是排序对等
方式,而是大范围连接检索最小距离的方式。
SELECT
A.FID,A.Fnum,MIN(A.Fid-B.Fid)
as
差值
FROM
test.cte
A
INNER
JOIN
test.cte
B
on(A.FID>B.FID)
GROUP
BY
A.FID,A.Fnum
ORDER
BY
A.Fid
Desc
---
执行结果:
FID
Fnum
差值
-------------------------
'9323',
'10',
'14'
'9309',
'10',
'1'
'9308',
'10',
'47'
'9261',
'10',
'31'
'9230',
'10',
'23'
'9207',
'10',
'16'
'9191',
'10',
'26'
'9165',
'10',
'14'2019-03-05
1楼的专家,你的查询结果里面会出现1,a,b这种情况
我要的是两表的返回结果只能是
1,a,a或者1,a,null或者1,null,a
--------------------------改改
--加多一个条件
and
a.uid=b.uid
select
a_id,a.uid,b.uid
from
a
left
outer
join
b
on
a.a_id=b.b_id
and
a.uid=b.uid
where
a.a_id='a'
union
select
b_id,a.uid,b.uid
from
a
right
outer
join
b
on
a.a_id=b.b_id
and
a.uid=b.uid
where
b.a_id='a'
--or
left
outer
join
改为
left
join2020-04-07
mengvlog 阅读 52 次 更新于 2025-12-15 04:00:52 我来答关注问题0
檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部