2014-11-14 55 views
0

我有以下SQL查询:修改值

SELECT town,latitude,longitude FROM coordinates 

下面将返回e.g

"California,10.02313,20.123213" 

我使用的查询结果放在gmaps标记。但是如果我为加利福尼亚州有10个标记,他们会堆积起来,因为坐标是一样的。

我想给lat和lng添加一个(非常小的)随机数,所以标记会出现在加州的限制内,但是它们不会堆积。

我如何添加,可以说FLOOR(RAND() * 0.0030)+0.0040以纬度和经度这样的结果将是:

"1,California,10.02322,20.123254" 
"2,California,10.02313,20.123213" 

请注意,在坐标中的小的变化,但还在里面加利福尼亚州的限制(使用非常小的变化)

+0

我也看到你添加了一个行号给SQL,但是你没有在你的问题中说明它? – 2014-11-14 20:05:31

+0

只是为了表明查询将返回多行。 – Theodoros80 2014-11-14 20:07:15

+0

@ConradFrix实际上,我在问行号是否是OP期望的结果。不确定你指的是什么。 – 2014-11-14 20:07:46

回答

2

SELECT可以跟随任意表达式,它们不必仅仅是列名。所以,你可以写:

SELECT town, 
     latitude + FLOOR(RAND() * 0.0030)+0.0040 AS latitude, 
     longitude + FLOOR(RAND() * 0.0030)+0.0040 AS longitude 
+0

我现在会测试它...... – Theodoros80 2014-11-14 20:08:23

+0

FLOOR(RAND()* 0.0030)不总是返回0吗? – 2014-11-14 20:38:37

+0

@ Invent-Animate是的。答案是更通用的,任何表达式都可以使用。无论是他想要的正确公式是正交的。 – Barmar 2014-11-14 20:43:29

0

的+0.004是不必要的,因为它没有随机的数据,它只是增加了一个常量它

SELECT town, FLOOR(RAND() * 0.0030) + latitude as latitude, FLOOR(RAND() * 0.0030) + longitude as longitude FROM coordinates

我也建议不要因为它增加地板很可能只是增加0到列(因为它舍入向下偏移到一个整数),而不是像做

SELECT town, (RAND() * 0.0030 + latitude) as latitude, (RAND() * 0.0030 + longitude) as longitude FROM coordinates