CREATE TABLE product (
year INTEGER,
product VARCHAR(256),
location Geometry
);
INSERT INTO product
(year, product, location) VALUES
(2000, "Calculator", ST_GeomFromText('point(60 -24)',4326)),
(2000, "Computer" , ST_GeomFromText('point(28 -77)',4326)),
(2000, "Abacus" , ST_GeomFromText('point(28 -77)',4326)),
(2000, "TV" , ST_GeomFromText('point(38 60)',4326)),
(2001, "Calculator", ST_GeomFromText('point(60 -24)',4326)),
(2001, "Computer" , ST_GeomFromText('point(28 -77)',4326));
复制
mysql> SELECT ST_AsText(ST_Collect(location)) AS result
FROM product;
+------------------------------------------------------------------+
| result |
+------------------------------------------------------------------+
| MULTIPOINT((60 -24),(28 -77),(28 -77),(38 60),(60 -24),(28 -77)) |
+------------------------------------------------------------------+
mysql> SELECT ST_AsText(ST_Collect(DISTINCT location)) AS result
FROM product;
+---------------------------------------+
| result |
+---------------------------------------+
| MULTIPOINT((60 -24),(28 -77),(38 60)) |
+---------------------------------------+
mysql> SELECT year, ST_AsText(ST_Collect(location)) AS result
FROM product GROUP BY year;
+------+------------------------------------------------+
| year | result |
+------+------------------------------------------------+
| 2000 | MULTIPOINT((60 -24),(28 -77),(28 -77),(38 60)) |
| 2001 | MULTIPOINT((60 -24),(28 -77)) |
+------+------------------------------------------------+
mysql> SELECT year, ST_AsText(ST_Collect(DISTINCT location)) AS result
FROM product GROUP BY year;
+------+---------------------------------------+
| year | result |
+------+---------------------------------------+
| 2000 | MULTIPOINT((60 -24),(28 -77),(38 60)) |
| 2001 | MULTIPOINT((60 -24),(28 -77)) |
+------+---------------------------------------+
# selects nothing
mysql> SELECT ST_Collect(location) AS result
FROM product WHERE year = 1999;
+--------+
| result |
+--------+
| NULL |
+--------+
mysql> SELECT ST_AsText(ST_Collect(location)
OVER (ORDER BY year, product ROWS BETWEEN 1 PRECEDING AND CURRENT ROW))
AS result
FROM product;
+-------------------------------+
| result |
+-------------------------------+
| MULTIPOINT((28 -77)) |
| MULTIPOINT((28 -77),(60 -24)) |
| MULTIPOINT((60 -24),(28 -77)) |
| MULTIPOINT((28 -77),(38 60)) |
| MULTIPOINT((38 60),(60 -24)) |
| MULTIPOINT((60 -24),(28 -77)) |
+-------------------------------+
复制
此函数是在MySQL 8.0.24中添加的。
文章转载自数据库杂货铺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【MySQL 30周年庆】MySQL 8.0 OCP考试限时免费!教你免费领考券
墨天轮小教习
3162次阅读
2025-04-25 18:53:11
MySQL 30 周年庆!MySQL 8.4 认证免费考!这次是认真的。。。
严少安
881次阅读
2025-04-25 15:30:58
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
524次阅读
2025-04-17 17:02:24
MySQL 9.3 正式 GA,我却大失所望,新特性亮点与隐忧并存?
JiekeXu
451次阅读
2025-04-15 23:49:58
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
381次阅读
2025-04-15 14:48:05
MySQL 8.0 OCP 1Z0-908 考试解析指南(二)
JiekeXu
330次阅读
2025-04-30 17:37:37
记录MySQL数据库的一些奇怪的迁移需求!
陈举超
294次阅读
2025-04-15 15:27:53
SQL优化 - explain查看SQL执行计划(下)
金同学
291次阅读
2025-05-06 14:40:00
MySQL 8.0 OCP 1Z0-908 考试题解析指南
青年数据库学习互助会
280次阅读
2025-04-30 12:17:54
MySQL 30 周年庆!MySQL 8.4 认证免费考!这次是认真的。。。
数据库运维之道
280次阅读
2025-04-28 11:01:25