多亏了对我以前的问题和这篇文章的回答,我找到了一种改写这个查询的方法:
SELECT * FROM participants
GROUP BY conversation_id
HAVING sum(user_id not in (1,3)) = 0
对此 Rails 样式查询:
Participant.find(:all, group: "conversation_id HAVING sum(user_id not in (1,3)) = 0")
我是 Rails 新手,但在我看来这是旧语法 - 最困扰我的是我在那里使用了很多 sql,而不是全部使用 Rails 语法。
我怎样才能更进一步地改写上面的查询,以便它只用 Rails 语法编写,可能不需要引号?我需要确保这将与不同的数据库一起运行。