题目
表 point
保存了一些点在 x 轴上的坐标,这些坐标都是整数。
写一个查询语句,找到这些点中最近两个点之间的距离。
示例1:
1 | | x | |
提示:
每个点都与其他点坐标不同,表 table
不会有重复坐标出现。
进阶:
如果这些点在 x 轴上从左到右都有一个编号,输出结果时需要输出最近点对的编号呢?
解法
解法一:
表自连接,构造偏序关系
SQL
1 | select min(P2.x - P1.x) as `shortest` from point as p1 join point as p2 on(p1.x < p2.x) |
解法二:
表自连接
Java
1 | select min(abs(p2.x-p1.x))as `shortest` from point as p1 join point p2 on(p1.x != p2.x) |