SELECT计算来自2个表的行并对结果求和

时间:2017-11-01 01:17:08

标签: php count mysql-num-rows

我有PHP代码:

$query = mysqli_query($mysqli, "SELECT * FROM `table_1`");
$result = mysqli_num_rows($query);

$queryTwo = mysqli_query($mysqli, "SELECT * FROM `table_2`");
$resultTwo = mysqli_num_rows($queryTwo);

$number =  $result + $resultTwo;
return $number;

关键是有时候,$number变量返回NULL,  什么时候不应该这样做。

我总是在这两个表中有行,并且返回的结果不应该是NULL。

这是一个正确的方法来对2个表中的行数求和吗?我不明白为什么有时候我会得到NULL而不是数字。

2 个答案:

答案 0 :(得分:3)

好吧,我建议你这样做

  select ( select count(*) from Table1 ) + ( select count(*) from Table2 ) 
  as total_rows

执行此查询并获取total_rows的值将返回真实结果

或者您可以创建存储过程来执行相同的操作。如下所述

CREATE PROCEDURE sp_Test
AS
-- Create two integer values
DECLARE @tableOneCount int, @tableTwoCount int

-- Get the number of rows from the first table
SELECT @tableOneCount = (SELECT COUNT(*) FROM Table1
                         WHERE WhereClause)
SELECT @tableTwoCount = (SELECT COUNT(*) FROM Table2
                         WHERE WhereClause)

-- Return the sum of the two table sizes
SELECT TotalCount = @tableOneCount + @tableTwoCount

答案 1 :(得分:1)

为什么不使用这样的一个查询: 你将直接在一个步骤中得到结果,它将避免两次联系数据库以获取中间结果,它也将简化你的程序!

SELECT 
(select count(*) from table_1)
+
(select count(*) from table_2)