假设我有一个名为Document的db表,它包含我拥有的所有文档的行。我有另一个名为Shared的数据库表,它包含我可以读/写的所有文档(由其他人拥有)的记录。
Document
id
type
user_id
permissions
Shared
id
document_id
used_id
permissions
我正在尝试编写一个查询,它可以让我找回我(给定user_id)拥有并有权访问的所有文档。我的尝试是这样的:
Select id, type, user_id, permissions from Document where user_id = 123
union all
Select id, type, user_id, permissions from Document where id in
(select document_id from shared where user_id = 123)
以上看起来有点冗长所以我想知道是否有一种更简洁/有效的方式来编写上述内容(如果它可以正常工作)
答案 0 :(得分:2)
尝试使用left join + where子句
Select d.id, d.type, d.user_id, d.permissions from Document d
left join shared s on s.document_id = d.id
and s.user_id = d.user_id
where d.user_id = 123
and s.document_id IS NOT NULL