已知a,b兩表,b表是a表aid = 1 構成的子表。現通過b表查詢a表中哪些aid同時全部包含了b表中所有的bid。(參考資料庫除運算
)表a:
表b:
查詢結果:
查詢sql**:
select distinct a2.aid from a as a2 where a2.aid not in(
select b2.baid from (
select a.aid aaid,a.bid abid,b1.aid baid,b1.bid bbid from (select a1.aid,b.bid from ((select distinct a.aid from a) as a1 cross join b) ) as b1
left join a using(aid,bid)
) as b2 where b2.aaid is null and b2.baid is not null )
附錄:表a:
-- table structure for `a`
drop table if exists `a`;
create table `a` (
`aid` int(11) not null,
`bid` int(11) not null,
primary key (`aid`,`bid`)
) engine=innodb default charset=latin1;
-- records of a
insert into `a` values ('1', '1');
insert into `a` values ('1', '2');
insert into `a` values ('1', '3');
insert into `a` values ('1', '4');
insert into `a` values ('2', '1');
insert into `a` values ('2', '2');
insert into `a` values ('3', '1');
insert into `a` values ('3', '2');
insert into `a` values ('3', '3');
insert into `a` values ('3', '4');
insert into `a` values ('3', '5');
insert into `a` values ('4', '1');
insert into `a` values ('4', '2');
insert into `a` values ('4', '3');
insert into `a` values ('4', '4');
表b:-- table structure for `b`
drop table if exists `b`;
create table `b` (
`aid` int(11) not null,
`bid` int(11) not null,
primary key (`aid`,`bid`)
) engine=innodb default charset=latin1;
-- records of b
insert into `b` values ('1', '1');
insert into `b` values ('1', '2');
insert into `b` values ('1', '3');
insert into `b` values ('1', '4');
資料庫除運算SQL實現
已知a,b兩表,b表是a表aid 1 構成的子表。現通過b表查詢a表中哪些aid同時全部包含了b表中所有的bid。參考資料庫除運算 表a 表b 查詢結果 查詢sql select distinct a2.aid from a as a2 where a2.aid not in select b2.b...
資料庫的除運算
這裡記錄一下我對資料庫除運算的理解。在 資料庫系統概論第五版 的書中是這樣定義的。設關係r除以關係s的結果為關係t,則t包含所有在r但不在s中的屬性及其值,且t的元組與s的元組的所有組合都在r中。這是乙個使用比較廣泛的例子。根據這個例子我們應該怎麼理解除運算呢?首先r的屬性有abc,s的屬性有bcd...
資料庫關係代數之除運算
除運算的 含義 給定關係r x,y 和s y,z 其中x,y,z為屬性組。r中的y與s中的y可以有不同的屬性名,但必須出自相同的域集。r與s的除運算得到乙個新的關係p x p是r中滿足下列條件的 元組在x屬性列上的投影 元組在x上分 量值x的象集yx包含s在y上投影的集合。解釋 有關係 r x,y ...