在軌我有2個表:如何選擇記錄,其中一個孩子不存在
bans(ban_id, admin_id)
ban_reasons(ban_reason_id, ban_id, reason_id)
我想找到所有的bans
一定管理員那裏是在ban_reasons
表中沒有記錄。我如何在Rails中執行此操作,而無需循環遍歷所有禁用記錄,並用ban.ban_reasons.nil?
篩選出所有這些記錄(我希望使用單個SQL語句執行此操作)。
我只需要做到:(但我想這樣做的「軌」的方式)
SELECT bans.* FROM bans WHERE admin_id=1234 AND
ban_id NOT IN (SELECT ban_id FROM ban_reasons)
兩者之間有什麼表現差異?第二個是否會導致更多的查詢? – 2010-09-21 20:11:42
是的,你會得到1更多的查詢與第二個...我認爲性能問題真的取決於你的數據庫大小。 – Yannis 2010-09-22 13:17:00
我猜如果目標是使用Rails,那麼這個建議就可以工作,但是對於大型數據集來說,性能會受到嚴重影響。 – 2013-02-01 14:22:23