对于友谊中的user_id,friend_id将是"其他"用户和我想选择友谊尚不存在的所有用户。
我正在使用Ruby on Rails并且我试图用一个带有rails语法的查询编写这个但是我很难找到一个原始SQL,这正是我需要的但是它让我回不了结果
SELECT u.id, u.name, u.avatar_url FROM users u LEFT JOIN friendships f on f.friend_id=u.id WHERE f.friend_id IS NULL AND f.user_id = ? ORDER BY u.updated_at DESC LIMIT 50
非常感谢任何帮助。
答案 0 :(得分:0)
SELECT u.id, u.name, u.avatar_url
FROM users u
LEFT JOIN friendships f on f.friend_id = u.id
WHERE f.friend_id IS NULL
ORDER BY u.updated_at DESC
LIMIT 50
摆脱AND f.user_id = ?
。上面的查询将找到没有朋友的所有用户,我不确定附加AND
的目的是什么,但似乎为什么你没有得到任何结果。
答案 1 :(得分:0)
所以我在所有键上都使用了表索引,但是我宁愿使用rails方式来执行它而不是纯SQL。
User.find_by_sql(["SELECT id, avatar_url, name FROM users WHERE id NOT IN (SELECT user_id FROM friendships WHERE friend_id=?) ORDER BY updated_at DESC LIMIT 9", session[:ytuserid]]).to_a
现在的用户现在可以看到9个不存在友谊的人。