有没有更有说服力的方式来做这些MySQL查询?

时间:2017-01-10 05:00:32

标签: php mysql

我对MySQL数据库进行4次单独查询,除了WHERE参数外,所有这些查询都是相同的。其中2个是:

$totalInvites = mysqli_num_rows(mysqli_query($con, "SELECT code FROM invites"));
$usedInvites = mysqli_num_rows(mysqli_query($con, "SELECT code FROM invites WHERE used IS NOT NULL"));

是否有办法执行$ totalInvites查询并从返回的表中执行WHERE调用而不进行其他查询?

如果这令人困惑,这就是我的意思的一个例子:

$query = mysqli_query($con, "SELECT code FROM invites");
$totalInvites = mysqli_num_rows($query);
$usedInvites = mysqli_num_rows($query /*WHERE used IS NOT NULL*/);

我知道这不是正确的语法,但那是我试图说的。

3 个答案:

答案 0 :(得分:2)

如果您只是想要计数,那么检索整个数据库并抛出结果并不是一个好主意。相反,jus任务计数:

SELECT COUNT(*) AS count, used
  GROUP BY used

这将为您提供最多两行,一个用于使用的行,一个不假定used只有NULL或一个非空值。

答案 1 :(得分:0)

使用尽可能少的SQL:

SELECT if(used is null, 0, 1) AS used, code
FROM invites

根据您的需要解析PHP中的结果

答案 2 :(得分:0)

SELECT
(SELECT code FROM invites) total
(SELECT code FROM invites WHERE used IS NOT NULL) used