2

有2张桌子

     table1                      table2

book_id | tag_id                 tag_id
----------------               -----------
  5     |   1                       1
  5     |   3                       3
  5     |   4                       4
  7     |   1
  7     |   2
  7     |   4

我需要创建 sql 查询以选择所有 book_id,其中 tag_id 是 table2 (SQLite)中所有 tag_id 的众多。

例如,book_id = 5 是可以接受的,因为它包含 table2 (1, 3, 4) 中的所有标签。book_id = 7 的书是不可接受的,因为它只有 1 和 4 个标签,但没有 tag_id = 3。

4

1 回答 1

2

我不确定这个查询是否会非常有效,但是......

select distinct book_id from table1 x 
where not exists(
select * from table2 t where not exists(
select * from table1 a 
where a.tag_id = t.tag_id 
and a.book_id = x.book_id));

设置代码:

drop table table1;
drop table table2;
create table table1(book_id int, tag_id int);
insert into table1 values(5, 1);
insert into table1 values(5, 3);
insert into table1 values(5, 4);
insert into table1 values(7, 1);
insert into table1 values(7, 2);
insert into table1 values(7, 4);
create table table2(tag_id int);
insert into table2 values(1);
insert into table2 values(3);
insert into table2 values(4);
于 2012-05-07T11:48:57.890 回答