LeetCode刷题-数据库(MySQL)- 613.直线上的最近距离

613.直线上的最近距离

一、题目描述

表 point 保存了一些点在 x 轴上的坐标,这些坐标都是整数。

写一个查询语句,找到这些点中最近两个点之间的距离。

x
-1
0
2

最近距离显然是 ‘1’ ,是点 ‘-1’ 和 ‘0’ 之间的距离。所以输出应该如下:

shortest
1

注意:每个点都与其他点坐标不同,表 table 不会有重复坐标出现。

进阶:如果这些点在 x 轴上从左到右都有一个编号,输出结果时需要输出最近点对的编号呢?

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/shortest-distance-in-a-line
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

二、思路分析

两表自连(笛卡尔乘积),得到下面的结果:
LeetCode刷题-数据库(MySQL)- 613.直线上的最近距离_第1张图片
取出来左右两表对应值之差大于0且最小的值。

三、代码实现

SELECT
	min(a.x - b.x) AS shortest
FROM
	point a,
	point b
WHERE
	a.x - b.x > 0;

你可能感兴趣的:(MySQL)