使用where语句引导MySQL查询

我有这个用户:

姓名 _____ 角色 _________ 状态

user1 -------- role1 ---------------- true

user2 -------- role2 ---------------- true

user3 -------- role2 ---------------- false

user4 -------- role3 ---------------- false

user5 -------- role4 ---------------- true

我有这个查询:

User.where("role = ? OR role = ? OR role = ? AND status = ?", "role1", "role2", "role3", true)

我预计数据将被检索是:

USER1

用户2

但即使系统状态为false,系统也会检索user3。

我也尝试将AND改为OR但它检索所有。

我的查询出了什么问题?


这个查询有什么问题是'OR组'缺少括号,

User.where("(role = ? OR role = ? OR role = ?) AND status = ?", "role1", "role2", "role3", true)

但是,正如在另一个答案中已经指出的那样,这可以通过一种更简单的方式来完成。

User.where(status: true).where(role: %w{role1 role2 role3})

尝试这个 :

User.where(status: true).where(role: ["role1", "role2", "role3"])

链接地址: http://www.djcxy.com/p/95051.html

上一篇: Rails MySQL query using where statement

下一篇: MySQL count Total Logged In Time for Application