当前位置:   article > 正文

mysql lateral_MySQL 8.0.14的LATERAL派生表

mysql lateral

作者:Guilhem Bichot 译:徐轶韬

在MySQL 8.0.14中,添加了LATERAL派生表的功能。在线手册https://dev.mysql.com/doc/refman/8.0/en/lateral-derived-tables.html中描述了语法,并提供了如何使用该功能在表中查找最大值的示例。

在本文中,我将利用LATERAL解决另一个问题:假设我们有一堆节点,并希将每个节点与其他节点连接生成一个“随机图”。

我们从一个nodes表开始:

create table nodes(id int);

这个表将填充20个节点,使用递归通用表表达式Common Table Expression(MySQL 8.0.1的 另一个功能):

insert into nodeswith recursive cte(n) as(select 1union allselect n+1 from cte where n<20)select * from cte;

现在,让我们在图上创建随机的边。它们是有方向的(具有“from”和“to”)。

create table edges (from_id int, to_id int);

对于每个原始节点,让我们选择两个随机目标节点,并将它们连接到原始节点。

如果我们使用普通派生表来存储两个目标节点:

insert into edges(from_id, to_id)select origin_nodes.id, target_nodes.idfrom nodes as origin_nodes,(select idfrom nodesorder by rand()limit 2) as target_nodes;

在执行INSERT查询时&

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/761802?site
推荐阅读
相关标签
  

闽ICP备14008679号