我在我的项目中使用MysqlDb Class。
$fromquery = $jdb->where("ac_ag_Id",1)->orWhere("ac_ag_Id",2)->orWhere("ac_ag_Id",4)->orWhere("ac_ag_Id",17)->where("c_Id",$cc_Id)->get("tbl_accounts")
这是我当前的查询,结果是
SELECT * FROM tbl_accounts WHERE ac_ag_Id = '1' OR ac_ag_Id = '2' OR ac_ag_Id = '4' OR ac_ag_Id = '17' AND c_Id = '2'
此处c_Id
必须为2
,但我也会得到c_Id
1
的结果。所以我添加了一个看起来像这样的括号,我得到了当前的结果
SELECT * FROM tbl_accounts WHERE (ac_ag_Id = '1' OR ac_ag_Id = '2' OR ac_ag_Id = '4' OR ac_ag_Id = '17') AND c_Id = '2'
如何从像添加函数andWhere
之类的类中获取此结果?
谢谢。
答案 0 :(得分:2)
您应该使用IN
子句而不是写多个OR
运算符
SELECT * FROM tbl_accounts WHERE ac_ag_Id IN(1,2,4,17);
使用IN
子句,您将获得(1,2,4,17)中ac_ag_Id的所有记录。
了解有关IN clause
link的更多信息。以上查询在mysql
上运行。我不是php开发人员
答案 1 :(得分:1)
像Vipin Jain建议的那样,您可以使用IN
代替许多类似的OR
。 MysqliDb Class的语法是:
$fromquery = $jdb->where("c_Id",$cc_Id)
->where("ac_ag_Id", [1,2,4,17], 'IN')
->get("tbl_accounts");