随笔 - 384  文章 - 0  评论 - 0  阅读 - 13万

力扣612(MySQL)-平面上的最近距离(中等)

题目:

表 point_2d 保存了所有点(多于 2 个点)的坐标 (x,y) ,这些点在平面上两两不重合。
写一个查询语句找到两点之间的最近距离,保留 2 位小数。

 最近距离在点 (-1,-1) 和(-1,2) 之间,距离为 1.00 。所以输出应该为:

 解题思路:

建表语句:

1 create table if not exists point_2d (x int(3),y int(3));
2 truncate table point_2d
3 insert into point_2d values(-1,-1),(0,0),(-1,-2);

运用MySQL中的数学函数---sqrt(数值)求平方根

①先将表自连接,但是注意连接的条件是两个点不相同,避免后续求距离的时候算成自己与自己的距离。

1 select *
2 from point_2d p1
3 join point_2d p2
4 on (p1.x,p1.y) <> (p2.x,p2.y)

 ②然后运用平方根公式计算出两个点之间的距离,且用round()来保留两位小数,最后筛选出最小的距离。

1 select min(round( sqrt( pow(p1.x-p2.x,2) + pow(p1.y-p2.y,2) ),2)) as shortest
2 from point_2d p1
3 join point_2d p2
4 on (p1.x,p1.y) <> (p2.x,p2.y);

 小知识:

①平方用power(x,2),而不是x^2

②二次平方根函数:

sqrt(数值):数值如果为0,返回NULL

更多函数可参考:这位老师的博客(点我跳转)

posted on   我不想一直当菜鸟  阅读(55)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示