我正在考虑最有效的方法来创建一个函数,该函数返回我在某个查询中获得的行数。我需要有很多查询的变体,因为我使用它来进行很多统计。(在实际版本中,它大约是5个变量,而不是2个)我没有发布完整的代码,而是创建了一个小片段,指出我试图克服的问题$conn是我的PDO连接。表的名称以及字段的名称都是固定的。
function stackOverflowDemo($var1,$var2){
global $conn;
$totalrows = $conn->query("select count(*) from $table WHERE firstfield = $var1 AND secondfield = $var2 ")->fetchColumn();
return $totalrows;
}
$output = stackOverflowDemo('1','30');
所以现在它会给我满足上述条件的行数。(firstfield = 1 AND secondfield = 30
),但现在线索来了:现在我想要firstfield is 1 and secondfield is anything
(像*)所在的行数。在不必编写新函数或专用查询的情况下,我如何让它为我工作?
function stackOverflowDemo($var1,$var2){
global $conn;
$query = "select count(*) from $table WHERE firstfield IS $var1 AND secondfield IS $var2";
$totalrows = $conn->query($query)->fetchColumn();
return $totalrows;
}
$output = stackOverflowDemo('1','NOT NULL');
也许这对你有用?
现在我想要其中
firstfield
是1
并且secondfield
是任何东西(如*)的行数
您的查询应该分别查找每个firstfield
和secondfield
的出现次数,然后对它们进行计数。
为secondfield
省略null
条目,您可以尝试以下操作:
select
sum(firstfield) first_field_count
, sum(secondfield) second_field_count
from (
select
case when firstfield=1 then 1 else 0 end as firstfield
, case when secondfield is not null then 1 else 0 end as secondfield
from table_name
) t;