直线上的最短距离

    科技2025-04-17  6

    CREATE TABLE If Not Exists point (x INT NOT NULL, UNIQUE INDEX x_UNIQUE (x ASC)) Truncate table point insert into point (x) values ('-1') insert into point (x) values ('0') insert into point (x) values ('2')

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

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

    | x | |-----| | -1 | | 0 | | 2 |

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

    | shortest| |---------| | 1 |

    注意:

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

    解题:

    1.一张表如果要对每次取两条数据进行处理,单张表的查询是不行的,需要使用join,那么左表是x表,右表也是x表。

    2.最近距离可以通过MIN(两个点的差值)来计算

    3.由于差值可能为负数,所以应该取绝对值,使用ABS方法

    答案:

    SELECT MIN(ABS(p1.x - p2.x)) shortest FROM point p1 INNER JOIN point p2 on p1.x > p2.x
    Processed: 0.011, SQL: 8