SQL找到没有愤怒评论的博客帖子

时间:2013-08-01 16:50:47

标签: sql ruby-on-rails

说我的博客有一个帖子表。帖子可以有评论,评论表行有FK到他们评论的帖子。因此,通过选择“comments.id为null”,可以找到所有无评论的帖子。

但是,让我们添加一个Comment.tone列,它可以有5个值中的一个,如“支持”,或“生气”等等。

现在我想找到所有没有愤怒评论的帖子。选择“comments.id为NULL”的SQL技术在您要求“所有不存在的行,但是如果它们确实存在,将具有'愤怒'的值”时不起作用。

那么如何选择它们?

1 个答案:

答案 0 :(得分:1)

尝试这一点,假设模型的名称是Post and Comment。

他们有像

这样的关系
Post has_many :comments

Comment belongs_to :post

Post.joins(:comments).where(tone: 'angry').all

没有生气

Post.joins(:comments).where('tone is not in (?)', ['angry']).all

or 

Post.joins(:comments).where(tone: ['happy', 'abc']).all