Sql 如何在更新查询时更新有限数量的记录?

Sql 如何在更新查询时更新有限数量的记录?,sql,oracle,plsql,oracle11g,Sql,Oracle,Plsql,Oracle11g,我们有更新查询,它更新所有具有相同城市名称和国家的学生记录,但我们只想更新500名具有相同城市名称和国家的学生 这是到目前为止的查询: update student st set st.Fee_Call_Opt_uid = (select t.opt_uid from (select distinct eco.opt_uid , eco.employee_id

我们有更新查询,它更新所有具有相同城市名称和国家的学生记录,但我们只想更新500名具有相同城市名称和国家的学生

这是到目前为止的查询:

update student st 
set st.Fee_Call_Opt_uid = (select t.opt_uid 
                           from (select distinct eco.opt_uid
                                        , eco.employee_id
                                        , ct.city_name
                                        , con.country_name 
                                 from employee_calling_operator eco 
                                 join territory tr 
                                     on tr.territory_id = eco.territory_id
                                 join city ct 
                                     on ct.territory_id = tr.territory_id
                                 JOIN country con 
                                     on con.country_id = ct.country_id) t
                           where st.city = t.city_name 
                           and st.country = t.country_name  
                           AND st.is_active_flg = 'Y'
                           and t.opt_uid = :P242_OPT_UID);
请帮帮我。我们使用的是oracle 11g

您可以使用rownum。 下面是一个简单的例子:

update test
set col1 = 2
where rownum <=2 
and col1 is null
下面是一个演示:

因此,只需添加:

where rownum <= 500

哪个500?最后的第一如果最后500,那么根据哪一个数据?任何有费用呼叫的500都是空的,那么下一个500呢?一旦我有1k条记录并运行了这个程序,它只会先更新500条记录,然后下一步我会执行相同的查询,因为下一步我必须提到rownum<1000@abdulraheemdev . . . 这回答了您在这里提出的问题。如果你有一个不同的问题,把它当作一个新问题来问。我同意@GordonLinoff的观点,你需要一个新问题来应对新的情况。另外,在形成和解释问题时,请再努力一点。因此,您似乎真的想更新所有问题,而不仅仅是随意更新500个问题。但出于某种原因,你似乎认为你需要分500批来做。你需要解释你真正的需求,以及为什么你认为你需要分批完成。@abdulraheemdev我看到你在这里有同样的问题:??