Join
選擇具有外鍵或連接表關係的行
我有這樣的桌子
# 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。這兩個查詢結合在一起:
- 其中 user_id=123
- 它通過 ThingUser 與使用者 123 相關
1)如果有,請使用測試環境
2)更改您的查詢以返回較小的樣本量,以查看這是否是您要查找的內容:
SELECT TOP 100 * from things INNER JOIN thing_users ON things.id=thing_users.id WHERE things.user_id = 123