带子查询的SQL语句怎么实现for update
有俩张表A,B,A为主表,B为子表,是1对多的关系。
需求是在A中搜出前 上限1000条 未处理 的数据和对应的子表数据,然后将主表状态改成 处理中,处理好后再将状态改成处理完成,这个过程中需要用for update来锁表。
我的sql语句思路是:
SELECT m.*,s.* FROM (
SELECT * FROM TBL_MAIN WHERE DEAL_FLAG = '0' and rownum<1001
)m
, TBL_SUB s
where m.id=s.id (for update of s.id)
括号内是我想锁表实现的地方,但由于存在子查询,所以不能锁主表,而现在这个锁子表又没什么用。
高人在哪里?
顺便说下另一种思路,就是分俩次来查,先查主表,然后根据差得的数据for循环再来查子表,这个耗费太大,实在没有办法时才考虑,暂时不采用。
需求是在A中搜出前 上限1000条 未处理 的数据和对应的子表数据,然后将主表状态改成 处理中,处理好后再将状态改成处理完成,这个过程中需要用for update来锁表。
我的sql语句思路是:
SELECT m.*,s.* FROM (
SELECT * FROM TBL_MAIN WHERE DEAL_FLAG = '0' and rownum<1001
)m
, TBL_SUB s
where m.id=s.id (for update of s.id)
括号内是我想锁表实现的地方,但由于存在子查询,所以不能锁主表,而现在这个锁子表又没什么用。
高人在哪里?
顺便说下另一种思路,就是分俩次来查,先查主表,然后根据差得的数据for循环再来查子表,这个耗费太大,实在没有办法时才考虑,暂时不采用。
...全文
相关推荐
SQL UPDATE 语句
SQL UPDATE 语句 UPDATE 语句用于更新表中的记录。 SQL UPDATE 语句 UPDATE 语句用于更新表中已存在的记录。 SQL UPDATE 语法 UPDATE table_name SET column1=value1,column2=value2,… WHERE some_column=some_value; 请注意 SQL UPDATE 语句中的 WHERE 子句! WHERE 子句规定哪条记录或者哪些记录需要更新。如果您省略了 WHERE 子句,所有的记录都将被更新! 演示数据库 在本教程中,我们将使用 RUNOOB 样本数据库。 下面是选自
基本SQL语句 - UPDATE语句
UPDATE 语句允许您更改 SQL 表中已有的数据。
执行一条sql语句update多条记录实现思路
如果你想更新多行数据,并且每行记录的各字段值都是各不一样,你会怎么办呢?本文以一个示例向大家讲解下如何实现如标题所示的情况,有此需求的朋友可以了解下
SQL Server UPDATE语句的用法详解
SQL Server中的数据改动是免不了的,使用UPDATE语句就可以实现我们对数据库数据的更新修改操作,下面就让我们来了解一下UPDATE语句的用法
insert,update导出sql语句
insert,update导出sql语句,很实用的小工具


基础和管理
