查找没有关联记录的所有记录

Rya*_*igg 12 sql ruby-on-rails

我有一个球队桌和一个球员桌,我想找到所有没有球员的球队.玩家表通过team_id列关联.我正在使用Ruby on Rails,所以我有一个Team和一个Player模型.

Ric*_*ole 18

执行左连接可能会更好:

SELECT
teams.*
FROM teams
LEFT JOIN players ON (teams.id = players.team_id)
WHERE
players.team_id IS NULL
Run Code Online (Sandbox Code Playgroud)

或者使用ARel(感谢JasonKing的评论):

Team.includes(:players).where('players.team_id IS NULL')
Run Code Online (Sandbox Code Playgroud)

  • 不需要使用SQL作为连接,这就是`includes()`的作用.IE浏览器.`Team.includes(:players).where('players.team_id IS NULL')` (3认同)
  • 最后一个技巧:`Team.includes(:players).where(:players => {:team_id => nil})` (3认同)