使用单个 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;

也就是说,不需要子查询。您可以直接调用函数。