我試圖選擇一個用戶,該用戶沒有具有某個值的關聯記錄。用於選擇相關記錄不存在的記錄的高效SQL查詢
我有一個用戶模型,一個用戶has_one供稿,一個供稿has_many FeedTracks,一個FeedTrack belongs_to一個跟蹤。我只想選擇用戶沒有帶有特定TrackId的FeedTrack的用戶。
我正在使用rails,但是我會對此嚴格打開SQL。
我已經得到的最好的是:
SELECT TOP 1000 *
FROM Users u
LEFT JOIN Feeds f ON f.user_id = u.id
LEFT JOIN FeedTracks ft ON ft.feed_id = f.id
ONLY IF ALL OF THOSE feedTracks' track_id !== <<track_id>>
顯然,這最後一部分的語句是不是真正的SQL,這就是我的問題是什麼。我怎麼說,嘿,讓我的用戶在這個相關的記錄不存在。但是如果該記錄確實存在,請不要返回該用戶。
換句話說,如果該用戶有一個提要,並且具有該提名標識的提要軌道,則不返回該用戶。但是,如果沒有,請返回該用戶。
好像你定義錯誤模式,如果用戶有一個飼料,飼料表應該有'user_id'列,而不是用戶表具有'feed_id'列。請張貼您的數據庫架構。 – Thanh
很好,謝謝 – gattra