我有这样的桌子
# Things
id
user_id
# ThingUser
id
thing_id
user_id
我想通过 ThingUser 选择 user_id=123 或与用户 123 相关的所有事物。
我想也许我很接近这样的事情:
select * from things
left outer join thing_users on things.id=thing_users.thing_id and thing_users.user_id = 123
where
things.user_id = 123 OR
thing_users.id IS NOT NULL
但是在我非常大的数据集上,这会挂起几秒钟,然后我就退出了。
我得出的结论是,实现这一目标的唯一/最合适的方法就是使用 UNION。这两个查询结合在一起:
1)如果有,请使用测试环境
2)更改您的查询以返回较小的样本量,以查看这是否是您要查找的内容: