在我的mysql查询中,我得到了latitude、longitutde和total列。对于lat和long,我做了一些计算工作,这些内容将打印在别名列中。到目前为止,这是可行的。结果应该是这样的:
Lat long length total
-----------------------------------------
49.236000 11.637500 3100 0.401500
49.178900 11.731900 3100 0.553000
49.582100 10.988300 3600 0.593800现在,我想将length列中的所有值相加,得到一个值total_length
下面是我的sql语句:
SELECT latitude, longitude, length, (ABS( latitude - 49.439810 ) + ABS( longitude - 11.439810 )) as total FROM records ORDER BY total LIMIT 20甚至有可能只总结一列吗?
我需要的是这样的东西:
Lat long length total
-----------------------------------------
49.236000 11.637500 3100 0.401500
49.178900 11.731900 3100 0.553000
49.582100 10.988300 3600 0.593800
----------------------------------------
9800将会有一个给定值,如20000。如果total_length小于20000,则LIMIT应为相加10,并再次计算total_length。Do经常出现,直到total_length达到20000或更高。
对SQL DB的请求将来自node.js后端。
发布于 2017-12-19 16:03:17
我会将问题一分为二,并用不同的查询计算总和。
SELECT SUM(length)
FROM records为了得到你想要的确切结果,你可能需要像这样做一些魔术:
SELECT latitude, longitude, length, (ABS( latitude - 49.439810 ) + ABS( longitude - 11.439810 )) as total
FROM records ORDER BY total LIMIT 20
UNION
SELECT NULL, NULL, SUM(length), NULL
FROM records
LIMIT 20它是有效的,但是拥有一个“量身定制的”行并不是我所说的干净的方法。
发布于 2017-12-19 16:09:58
如果你确实需要一个查询,你可以在这里使用一个汇总技巧:
SELECT
latitude,
longitude,
ABS(latitude - 49.439810) + ABS(longitude - 11.439810) AS total,
SUM(length)
FROM records
GROUP BY
latitude,
longitude,
ABS(latitude - 49.439810) + ABS(longitude - 11.439810)
WITH ROLLUP
HAVING
(longitude IS NOT NULL AND total IS NOT NULL) OR latitude IS NULL;

https://stackoverflow.com/questions/47882292
复制相似问题