使用单个 UPDATE 脚本向 table 中的每一行添加单独的值
Adding separate values to every row in table using a single UPDATE script
我正在尝试根据用户输入的邮政编码向餐厅的每一行添加距离值 table,但是,到每家餐厅的距离会有所不同,因此需要WHERE
子句匹配不同的 restaurant_id
.
UPDATE RESTAURANTS
SET RESTAURANTS.DISTANCE = (SELECT SDO_GEOM.SDO_DISTANCE
(a.location,
SDO_GEOMETRY(2001, 4326, SDO_POINT_TYPE(l_lng, l_lat, null), null, null), 0.005, 'unit=mile') distance
FROM RESTAURANTS a
WHERE a.restaurant_id = ???;
);
我假设我需要一个包含所有餐厅 ID 的数组和一个循环 运行 通过它们。我该怎么做?
也许这就是你想要的:
UPDATE RESTAURANTS
SET DISTANCE = SDO_GEOM.SDO_DISTANCE(location,
SDO_GEOMETRY(2001,
4326,
SDO_POINT_TYPE(l_lng,
l_lat,
null
null,
null
),
0.005,
'unit=mile'
) distance;
也就是说,不需要子查询。您可以直接调用函数。
我正在尝试根据用户输入的邮政编码向餐厅的每一行添加距离值 table,但是,到每家餐厅的距离会有所不同,因此需要WHERE
子句匹配不同的 restaurant_id
.
UPDATE RESTAURANTS
SET RESTAURANTS.DISTANCE = (SELECT SDO_GEOM.SDO_DISTANCE
(a.location,
SDO_GEOMETRY(2001, 4326, SDO_POINT_TYPE(l_lng, l_lat, null), null, null), 0.005, 'unit=mile') distance
FROM RESTAURANTS a
WHERE a.restaurant_id = ???;
);
我假设我需要一个包含所有餐厅 ID 的数组和一个循环 运行 通过它们。我该怎么做?
也许这就是你想要的:
UPDATE RESTAURANTS
SET DISTANCE = SDO_GEOM.SDO_DISTANCE(location,
SDO_GEOMETRY(2001,
4326,
SDO_POINT_TYPE(l_lng,
l_lat,
null
null,
null
),
0.005,
'unit=mile'
) distance;
也就是说,不需要子查询。您可以直接调用函数。