sql问题。 - Oracle / 基础和管理
主表 A 中,对应B表有多条数据 通过B表的mid 与A表关联。B表有个字段state,只有state全为1时才将A表中的state 设为1.
结构基本如下:
A
ID state
1 0
B
ID MID state
1 1 1
2 1 1
3 1 1
最后的结果需要。
AID Astate
1 1
一条sql可以实现吗
SQL code:
create table a (id int,state int)
insert into a values(1,0)
create table b (id int,mid int,state int)
insert into b values(1,1,1)
insert into b values(2,1,1)
insert into b values(3,1,1)
update a set state=1
from a
where exists(select 1 from b where a.id=b.mid and state=1)
select * from a
id state
1 1
哦。我需要一条查询sql,,a表中的值不必修改。
SQL code:
UPDATE a
SET a.state =
(SELECT MIN(nvl(b.state, 0)) from b WHERE b.mid = a.id)
WHERE EXISTS (SELECT 1 from b WHERE b.mid = a.id);
SQL code:
--或者这个
UPDATE a
SET a.state =
(SELECT case when COUNT(1)>0 then 0 else 1 end
from b
WHERE b.mid = a.id AND
a.id != 1)
WHER
相关问答:
我一个项目,有个插入操作,具体是这样的:
我有进货信息表。在出货时选择相应的进货信息,输入数量,选择部门后,点保存按钮,由于网络延时,点一下没有反映,于是用户就又点一下,导致一次插入了两条记录:
例:
......
各位大哥,帮个忙。
下个Oracle for vista 版本的安装试试
10G和11G的
http://www.oracle.com/technology/software/products/database/index.html
------------------------------------------- ......
在系统运行的时候总是有一块磁盘始终闪红灯,进入系统后
#topas查看总是有一块磁盘%BUSY为90%以上,
数据库版本:oracle 9.2.0.7
数据文件挂载的节点:/oradata/pcs/ 逻辑卷号lv04
#lslv -l lv04
......
做玩data guard 后
在Primary服务器 执行
SQL>SELECT SEQUENCE#,APPLIED from V$ARCHIVED_LOG ORDER BY SEQUENCE#;
SEQUENCE# APP
---------- ---
13 NO
13 YES ......