Sqlite 选择pivvot同时具有两条记录的位置

Sqlite 选择pivvot同时具有两条记录的位置,sqlite,Sqlite,Sqlite 3.22.0 我有以下表格:用户,书籍,用户书籍。我正在尝试选择一本书,它只属于某些用户(下例中id为3和5的用户): 用户手册数据: user_id | book_id 1 | 1 2 | 2 3 | 3 4 | 4 5 | 5 3 | 5 我希望得到id为5的书,但我得到的是id为3和5的书 怎么了 我试过了 select * fro

Sqlite 3.22.0

我有以下表格:
用户
书籍
用户书籍
。我正在尝试选择一本书,它只属于某些用户(下例中id为3和5的用户):

用户手册
数据:

user_id | book_id
      1 |       1
      2 |       2
      3 |       3
      4 |       4
      5 |       5
      3 |       5
我希望得到id为5的书,但我得到的是id为3和5的书

怎么了

我试过了

select * from books
inner join user_books ub on books.id = ub.book_id
where ub.user_id = 3 and ub.user_id = 5

但得到的结果为空。

您必须加入两个表,
按b.id进行分组
,并使用
having count(*)=2
,以便只获取属于两个用户的书籍:

select b.id 
from books b inner join user_books u
on u.book_id = b.id
where u.user_id in (3, 5)
group by b.id
having count(*) = 2

我想在您的第二个查询中添加,条件
ub.user_id=3和ub.user_id=5
必须为false,因为
ub.user_id
不能同时等于3和5,这是矛盾的。
select b.id 
from books b inner join user_books u
on u.book_id = b.id
where u.user_id in (3, 5)
group by b.id
having count(*) = 2