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
Ïà¹ØÎÊ´ð£º
ÎÒÊÇÓÃÔ¶³Ì×ÀÃæÁ¬²Ù×÷·þÎñÆ÷ÉϵÄÊý¾Ý¿â¡£
ÔÚ´´½¨Ò»¸öÓû§Ö®ºó£¬ÔÙÓÃPLSQLµÇ¼£¬ÔòPLSQLËÀµôÁË¡£
ÎҹصôPLSQLÖ®ºó£¬ÓÃÆäËûÓû§Ò²²»ÄܵǼ¡£
ÎÒ°ÑoracleµÄ·þÎñÍ£Ö¹£¬½á¹û¾ÍÊÇoracleµÄ·þÎñ״̬¾ÍÍ£ÁôÔÚ¡°Í ......
ÎÒÒ»¸öÏîÄ¿£¬Óиö²åÈë²Ù×÷£¬¾ßÌåÊÇÕâÑùµÄ£º
ÎÒÓнø»õÐÅÏ¢±í¡£ÔÚ³ö»õʱѡÔñÏàÓ¦µÄ½ø»õÐÅÏ¢£¬ÊäÈëÊýÁ¿£¬Ñ¡Ôñ²¿Ãź󣬵㱣´æ°´Å¥£¬ÓÉÓÚÍøÂçÑÓʱ£¬µãÒ»ÏÂûÓз´Ó³£¬ÓÚÊÇÓû§¾ÍÓÖµãһϣ¬µ¼ÖÂÒ»´Î²åÈëÁËÁ½Ìõ¼Ç¼:
Àý£º
......
ÔÚϵͳÔËÐеÄʱºò×ÜÊÇÓÐÒ»¿é´ÅÅÌʼÖÕÉÁºìµÆ£¬½øÈëϵͳºó
#topas²é¿´×ÜÊÇÓÐÒ»¿é´ÅÅÌ%BUSYΪ90%ÒÔÉÏ£¬
Êý¾Ý¿â°æ±¾£ºoracle 9.2.0.7
Êý¾ÝÎļþ¹ÒÔØµÄ½Úµã£º/oradata/pcs/ Âß¼¾íºÅlv04
#lslv -l lv04
......
ÏÖÔÚÓÐÁ½ÕÅ±í£ºÎÄÕÂÖ÷±íA(articleId,articleTitle)£¬ÎÄÕÂÆÀÂÛ±íB(commentId,articleId,commentTitle)
ÏÖÔÚÎÒÏëʵÏÖÕâÑùµÄ¹¦ÄÜ£ºÁгöÎÄÕÂÁÐ±í£¬ÆäÖÐÿƪÎÄÕ±êÌâÏÂÃæÁгö´ËÎÄÕµÄǰ2¸öÎÄÕÂÆÀÂÛ£¬ÇëÎÊsqlÓï¾äÔõôд°¡ ......