Php 带别名的多查询Mysql

Php 带别名的多查询Mysql,php,mysql,mysqli,Php,Mysql,Mysqli,我有两个查询,必须在一个查询执行中执行。例如 $query1 = "SELECT COUNT(*) AS c1 FROM table WHERE condition1"; $query2 = "SELECT COUNT(*) AS c2 FROM table WHERE condition2"; $result = mysqli->query($query1 ." UNION ".$query2); while($res = $result->fetch_assoc()) {

我有两个查询,必须在一个查询执行中执行。例如

$query1 = "SELECT COUNT(*) AS c1 FROM table WHERE condition1";
$query2 = "SELECT COUNT(*) AS c2 FROM table WHERE condition2";

$result = mysqli->query($query1 ." UNION ".$query2);

while($res = $result->fetch_assoc())
{
  print $res;
}
我必须得到两个计数,分别为c1和c1

通过执行上述代码,我得到了{“c1”:“计数数”}

可能的解决办法是什么

提前谢谢

我有两个查询,必须在一个查询执行中执行

不,你没有

只需在两个单独的电话中运行它们

我有两个查询,必须在一个查询执行中执行

不,你没有


只需在两个单独的呼叫中运行它们。

尝试这样做以获得计数:

$count = 0;
while($res = $result->fetch_assoc())
{
  $count += array_sum($res);
}

尝试执行此操作以获取计数:

$count = 0;
while($res = $result->fetch_assoc())
{
  $count += array_sum($res);
}

只需使用CASE语句:

SELECT 
SUM(
CASE WHEN condition1 
     THEN 1
     ELSE 0
END) AS c1,

SUM(
CASE WHEN condition2 
     THEN 1
     ELSE 0
END) AS c2,

FROM table 

只需使用CASE语句:

SELECT 
SUM(
CASE WHEN condition1 
     THEN 1
     ELSE 0
END) AS c1,

SUM(
CASE WHEN condition2 
     THEN 1
     ELSE 0
END) AS c2,

FROM table 

使用
UNION ALL
代替
UNION

$result = mysqli->query($query1 ." UNION ALL".$query2); 

使用
UNION ALL
代替
UNION

$result = mysqli->query($query1 ." UNION ALL".$query2); 
更改sql查询

SELECT 
(SELECT COUNT(*) FROM table WHERE condition1) as c1,
(SELECT COUNT(*) FROM table WHERE condition2) as c2
FROM table
更改sql查询

SELECT 
(SELECT COUNT(*) FROM table WHERE condition1) as c1,
(SELECT COUNT(*) FROM table WHERE condition2) as c2
FROM table

你想要实现什么?你想把c1和c2相加,得到一个总计数作为结果吗?不想得到单独的结果。你想得到什么?你想将c1和c2相加,得到一个总计数作为结果吗?不,得到单独的结果。谢谢你的回答,但我想得到单独的计数。谢谢你的回答,但我想得到单独的计数。这对我也很有效,但我必须为外部选择设置DISTINCT以获得单个结果。谢谢,这对我也有用,但我必须为外部选择设置DISTINCT,以获得单一结果。谢谢