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

tag_id が table2 (SQLite) からのすべての tag_id の多数であるすべての book_id を選択するための SQL クエリを作成する必要があります。

たとえば、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 に答える