Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在for -循环中选择以便进一步计算?

如何在for -循环中选择以便进一步计算?
EN

Stack Overflow用户
提问于 2014-12-12 11:10:25
回答 2查看 4.8K关注 0票数 1

使用postgresql和postgis,我有2个openstreetmap表,包含:

  1. 点:具有单一坐标的位置
  2. 多边形:具有坐标集的区域

现在,我试图循环遍历Point表,对于每个记录,我都试图使用postgis函数进行一些计算,例如ST_Intersects()。然后尝试将结果插入另一个表中。

到目前为止,我只使用postgis函数完成了简单的SELECT查询,它们基本上是这样工作的:

代码语言:javascript
运行
AI代码解释
复制
SELECT a.name, b.name
FROM   table_point AS a, table_polygon AS b
WHERE  a.name = 'Berlin' AND ST_Intersects(a.way, b.way);

注意:way是包含几何数据的两个表中的列。

回到我想要操作的循环,我发现自己缺乏plpgsql基础知识。我创建了以下循环结构,但不知道如何为postgis函数选择第二组记录(table_point AS a, table_polygon AS b)。简短:如何选择table_polygon和for -循环的记录?或者,有没有更好的方法来解决这个问题?

代码语言:javascript
运行
AI代码解释
复制
DO
$do$

DECLARE
r RECORD;

BEGIN
FOR r IN SELECT * FROM table_point
LOOP
RAISE NOTICE '%', r;

...

END LOOP;
END;
$do$ LANGUAGE plpgsql

在Ubuntu 14.04 64位上使用PGSQL 9.3.5 .

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-12 16:51:48

在大多数情况下,基于集合的方法在关系数据库中更优越。比如:

代码语言:javascript
运行
AI代码解释
复制
INSERT INTO table_other (point, polygon, result)
SELECT a.name, b.name, calculate(a.?, b.?) AS result -- undefined what to do
FROM   table_point   a
JOIN   table_polygon b ON ST_Intersects(a.way, b.way)
WHERE  a.name = 'Berlin';
票数 2
EN

Stack Overflow用户

发布于 2014-12-12 11:41:18

只需将r2定义为记录。

然后做一些如下的事情:

代码语言:javascript
运行
AI代码解释
复制
FOR r IN SELECT * FROM table_point
LOOP
RAISE NOTICE '%', r;
   for r2 in select * from table2 where table2.id=r.somecolumn
   LOOP
   --perform calcs here
   end loop;

END LOOP;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27450490

复制
相关文章
如何在Bash中编写循环?
人们想要学习Unix shell的一个常见原因是释放批处理的功能。如果要对许多文件执行某些操作,一种方法是构造一个遍历这些文件的命令来实现。在编程术语中,这称为执行控制,最常见的示例之一是for循环。
用户6543014
2020/02/21
2.6K0
你如何在 Python 中循环字典?
Python是编程语言,也是最流行的面向对象编程语言之一,它是围绕字典构建的。字典被描述为多个对象的书面映射。Python 字典允许您以灵活的方式组织数据,以复杂的结构存储键值对,并以相同的名称访问它们。
很酷的站长
2023/02/20
6.4K0
你如何在 Python 中循环字典?
如何在 Spring 中解决 bean 的循环依赖
在 Spring 中,bean 往往不会独立存在,bean 的相互依赖是极为常见的。在这一过程中,错综复杂的 bean 依赖关系一旦造成了循环依赖,往往十分令人头疼,那么,作为使用者,如果遇到了循环依赖问题,我们应该如何去解决呢?本文我们就来为您详细解读。
用户3147702
2022/12/21
3.1K0
如何在 Spring 中解决 bean 的循环依赖
从信息安全到如何在DAX中实现for循环
比如在一些会议上要展示一些图表,如果仅仅是放一些数据,可能并不能起到很好的作用,如果把姓名全都放上,则又会泄露一些信息。
陈学谦
2021/12/08
1.7K0
从信息安全到如何在DAX中实现for循环
如何在 Linux 中创建虚拟块或循环设备?
Linux 用户可以拥有一个称为“循环设备”的虚拟块设备,它将普通文件映射到虚拟块,使其成为与隔离进程相关的任务的理想选择。
网络技术联盟站
2022/10/14
4.4K0
如何在 Linux 中创建虚拟块或循环设备?
MATLAB循环_matlab如何循环计算
1. while循环 在给定条件为真时,重复一个语句或一组语句。它在执行循环体之前测试状态。 语法 MATLAB中while循环的语法是 : while <expression> <statements> end 只要表达式(expression)为true,while循环将重复执行程序语句(statements)。 当结果为非空并且包含所有非零元素(逻辑或实数)时,表达式(expression)为true。 否则,表达式(expression)为false。 栗子: a = 10; % while loop execution while( a < 20 ) fprintf(‘value of a: %d\n’, a); a = a + 1; end 执行上面示例代码,得到以下结果 – value of a: 10 value of a: 11 value of a: 12 value of a: 13 value of a: 14 value of a: 15 value of a: 16 value of a: 17 value of a: 18 value of a: 19 2. for循环 多次执行一系列语句,并缩写管理循环变量的代码。 for循环是一种重复控制结构,可以让您有效地编写一个需要执行特定次数的循环。 语法 MATLAB中for循环的语法是 for index = values <program statements> … End 值(values)具有以下格式 – 值格式 描述 initval:endval index变量从initval到endval每次递增1,并重复程序语句 的执行,直到index大于endval。 initval:step:endval 通过每次迭代值步长(step)增加索引(index)的值,或者 当step为负时递减。 valArray 在每个迭代中从数组valArray的后续列创建列向量索 引。 例如,在第一次迭代中,index = valArray(:,1)。 循环最多执行n次,其中n是由numel(valArray,1,:)给出的valArray的列数。valArray可以是任何MATLAB数据类型,包括字符串,单元格数组或结构体。 前两种挺简单的,所以在此值对于第三种语法进行举例子说明: X=rand(5,1); for i=X i end X=rand(1,5); for i=X i end 运行结果是: i = 0.4898 0.4456 0.6463 0.7094 0.7547 i = 0.2760 i = 0.6797 i = 0.6551 i = 0.1626 i = 0.1190 注意:对于向量建立的是列向量索引!! X=magic(3); X for i=X i end 运行输出
全栈程序员站长
2022/11/10
2.5K0
Python条件选择与循环
条件选择与循环是Python中非常基础也是非常重要的语句结构,本节重点介绍这两个部分:
小雨coding
2020/06/30
1.4K0
shell脚本-循环选择语句
过程式编程语言: 顺序执行 选择执行 循环执行 注:条件中的变量,可以在执行语句中使用,不用在加上"$"。
菲宇
2022/12/21
2.4K0
shell脚本-循环选择语句
【DB笔试面试511】如何在Oracle中写操作系统文件,如写日志?
可以利用UTL_FILE包,但是,在此之前,要注意设置好UTL_FILE_DIR初始化参数。
AiDBA宝典
2019/09/30
30.5K0
【DB笔试面试511】如何在Oracle中写操作系统文件,如写日志?
如何在JavaScript中使用for循环
循环允许我们通过循环数组或对象中的项并做一些事情,比如说打印它们,修改它们,或执行其他类型的任务或动作。JavaScript有各种各样的循环,for循环允许我们对一个集合(如数组)进行迭代。
chuckQu
2022/11/28
5.2K0
如何在JavaScript中使用for循环
python(二)—选择和循环结构
该文是关于Python选择结构和循环结构的语法介绍。
企鹅号小编
2018/01/02
1.2K0
python(二)—选择和循环结构
[Python基础05]输入输出&选择和循环
python中的输入输出,在初学python的时候是比较有用的一个交互操作方式
周小董
2022/04/12
1K0
[Python基础05]输入输出&选择和循环
如何在 Bash 中使用循环
人们希望学习批处理命令的一个普遍原因是要得到批处理强大的功能。如果你希望批量的对文件执行一些指令,构造一个可以重复运行在那些文件上的命令就是一种方法。在编程术语中,这被称作执行控制,for 循环就是其中最常见的一种。
用户1880875
2021/09/18
1.7K0
for循环中执行顺序_顺序结构选择结构循环结构
今天刷题碰到的一个坑,就是没有注意到for循环的每次判断条件导致的**,也就是for循环的第二句**,每次循环都会执行该判断条件。
全栈程序员站长
2022/11/17
8370
如何在Linux中使用`usermod`命令,以便你可以灵活地管理用户账户?
在Linux系统中,usermod是一个用于修改用户账户属性的强大命令。它允许系统管理员对现有用户进行更改,例如修改用户名、用户ID(UID)、用户组ID(GID)、家目录、登录Shell等。usermod命令的正确使用对于维护系统安全性和灵活性至关重要。在本文中,我们将深入探讨如何在Linux中使用usermod命令,以便你可以灵活地管理用户账户。
网络技术联盟站
2023/08/03
9270
如何在Linux中使用`usermod`命令,以便你可以灵活地管理用户账户?
企业如何在云计算中实现敏捷性?
鉴于云计算在企业中稳定增长,我们预测供应商将会开发出更多方法以帮助企业利用这些资源。而考虑到IT领导者需要业务敏捷性以应对新的挑战性机遇,这引发一个问题:CIO如何在云计算技术中创造敏捷性?
静一
2020/05/19
7850
企业如何在云计算中实现敏捷性?
如何在PP中通过添加列计算移动平均?
(一) 通过添加列计算移动平均 表1 前提条件要点:日期列连续不中断 要求:计算5日平均值 1. 解题思路 计算5日平均值则只有在日期大于5日以后的,才会有5日均线 筛选出当前日期往上倒推5日的表,并
逍遥之
2020/03/24
2K0
如何在PP中通过添加列计算移动平均?
matlab循环求和_r语言for循环计算求和
编写程序求和 S=a+aa+aaa+aaaa+…,其中a 是1-9 中的一个数字。n 为一正整数, a 和n均从键盘输入。(例如输入n 为4,a 为2,S=2+22+222+2222)
全栈程序员站长
2022/11/08
1.2K0
C语言初阶(三) -选择、循环、函数
在日常生活中我们经常会遇到需要做出选择的情况,面对一个或多个条件,做出自己的选择,C语言中也为实现了这种需要选择的情况时的语句。
怠惰的未禾
2023/04/27
2470
点击加载更多

相似问题

如何在for循环中选择指定的数据(如id ),以便在不同的页面中使用这些数据

24

将hh:mm:ss转换为float以便进一步计算

20

C-读取和存储数据文件,以便进一步计算。

31

从NSArray中选择对象,以便使用IBAction进一步删除

12

尝试存储变量的多个副本,以便进一步在计算中使用

115
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档