计算平地上两点之间的距离

时间:2014-07-07 16:39:20

标签: mysql sql

我有一张合作伙伴表,我想找到最近的点,或者找一个简单的方法来测量距离。

这是我的atm。我目前的位置是(1500,1300)

SELECT  `key` ,  `name` , SQRT( (
`x` - 1500
) + (  `z` - 1300 ) ) 
FROM  `stargates` 
WHERE 1 

我得到空的返回值

我正在处理x和z合作的平坦世界。

表:

CREATE TABLE IF NOT EXISTS `locations` (
  `key` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `x` int(11) NOT NULL,
  `z` int(11) NOT NULL,
  `discription` varchar(255) DEFAULT NULL,
  `status` int(11) NOT NULL DEFAULT '1',
  `created` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`key`)
)    

INSERT INTO `stargates` (`key`, `name`, `x`, `z`, `discription`, `status`, `created`, `modified`) VALUES
(1, 'PlaceA', -4461, 73, -2612, NULL, 0, '2014-07-07 14:10:35', '2014-07-07 14:10:35'),
(3, 'PlaceB', 1156, 66, -1915, NULL, 0, '2014-07-07 14:10:35', '2014-07-07 14:10:35'),
(5, 'PlaceC', 4541, 71, 3091, NULL, 0, '2014-07-07 14:10:35', '2014-07-07 14:10:35'),
(7, 'PlaceD', 5, 118, -66, NULL, 0, '2014-07-07 14:10:35', '2014-07-07 14:10:35'),
(9, 'PlaceE', -4441, 72, -2604, NULL, 0, '2014-07-07 14:10:35', '2014-07-07 14:10:35'),
(11, 'PlaceF', 71, 75, -66, NULL, 0, '2014-07-07 14:10:35', '2014-07-07 14:10:35') 

2 个答案:

答案 0 :(得分:4)

你错过了你想要的公式的重要部分

SQRT( POWER('x' - 1500, 2) + POWER(  'z' - 1300, 2 ) )

请注意,一般形式是

SQRT( POWER('x2' - 'x1', 2) + POWER( 'z2' - 'z1', 2 ) )

因此,请确保您使用的是x1,z1参考点。这将为您提供距离点(1500,1300)的距离。

答案 1 :(得分:0)

您在x-1550z-1330中缺少一个正方形,距离为sqrt(x^2+y^2)