使用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