0

我在我的项目中使用MysqlDb 类

$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什么的?

4

2 回答 2

2

您应该使用IN子句而不是编写多个OR运算符

SELECT  * FROM tbl_accounts WHERE  ac_ag_Id IN(1,2,4,17);

usingIN子句您将获得 (1,2,4,17) 中 ac_ag_Id 的所有记录。

有关IN clause 链接的更多信息。上面的查询运行在mysql. 我不是 php 开发者

于 2016-02-19T12:21:18.437 回答
1

就像 Vipin Jain 建议的那样,您可以使用IN而不是许多类似OR的 s。MysqliDb 类的语法是:

$fromquery = $jdb->where("c_Id",$cc_Id)
                 ->where("ac_ag_Id", [1,2,4,17], 'IN')
                 ->get("tbl_accounts");
于 2016-02-19T13:19:33.417 回答