Sqlite 选择pivvot同时具有两条记录的位置
Sqlite 3.22.0 我有以下表格: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
用户
,书籍
,用户书籍
。我正在尝试选择一本书,它只属于某些用户(下例中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