感谢this answer对我之前的问题和this article我发现了一种方法来改写此查询:
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语法编写,可能不需要引号?我需要确保这将与不同的数据库一起运行。
答案 0 :(得分:1)
Rails 3的方式是:
Participant.group("conversation_id").having("sum(user_id not in (1,3)) = 0")
您将无法取消having子句中的字符串。你对弦乐的关注是什么?上面的查询应该是相当便携的。