values句内でサブクエリ

 

(8.0.31)

drop table tab1;
drop table tab2;

create table tab1(col1 varchar(10), col2 int);
create table tab2(col1 varchar(10), col2 int);

insert into tab1 values('a',1);
insert into tab2 values('a',1);


insert into tab2 values('b',(select count(*) from tab1) );
insert into tab2 values('c',(select count(*) from tab2) );

→ ERROR 1093 (HY000): You can't specify target table 'tab2' for update in FROM clause

select * from tab2;

参照テーブルが他の場合に限り可能★

(19c)

drop table tab1 purge;
drop table tab2 purge;

create table tab1(col1 varchar2(10), col2 int);
create table tab2(col1 varchar2(10), col2 int);

insert into tab1 values('a',1);
insert into tab2 values('a',1);
commit;

insert into tab2 values('b',(select count(*) from tab1) );
insert into tab2 values('c',(select count(*) from tab2) );
commit;

select * from tab2;

参照テーブルが自他ともに可能

(15)

drop table tab1;
drop table tab2;

create table tab1(col1 varchar(10), col2 int);
create table tab2(col1 varchar(10), col2 int);

insert into tab1 values('a',1);
insert into tab2 values('a',1);


insert into tab2 values('b',(select count(*) from tab1) );
insert into tab2 values('c',(select count(*) from tab2) );


select * from tab2;

参照テーブルが自他ともに可能

(2019)

drop table tab1;
drop table tab2;

create table tab1(col1 varchar(10), col2 int);
create table tab2(col1 varchar(10), col2 int);

insert into tab1 values('a',1);
insert into tab2 values('a',1);


insert into tab2 values('b',(select count(*) from tab1) );
insert into tab2 values('c',(select count(*) from tab2) );


select * from tab2;

参照テーブルが自他ともに可能