如何计算表中的值并返回true,仅当使用php mysql找到该值5次时

Posted

技术标签:

【中文标题】如何计算表中的值并返回true,仅当使用php mysql找到该值5次时【英文标题】:how to count values from a table and return true, only if the value is found 5 times using php mysql 【发布时间】:2018-12-06 05:05:49 【问题描述】:

我正在使用 phpmysql 构建一个类似用户的系统。

这是我的桌子

-------------- 
ID    value      
--------------- 
1       1           
2       0           
3       1
4       1
5       1
6       0   

我正在尝试在 php 中编写一个 mysql 查询,如果总值计数大于 5,则仅显示总值计数。即,如果在表中找到超过 5 条记录,则仅将查询返回为真.

有人可以帮帮我吗?我已经尝试了很多东西。

这是我迄今为止尝试过的代码

 $query = "  SELECT COUNT(value) AS value,
                    CASE
                    WHEN value > 0 THEN value ELSE 0 END
                    FROM users
            ";

 $query = $this->db->query($query);

 $query->result_array();

 if ($query->num_rows() > 0)

     echo "more than 5 records are found";

  

谢谢

(编辑 - 使问题更清楚)

因此,如果我们查看下表(TABLE 1),则在表中找到了 6 次 value = 1。所以查询应该返回true。这是因为我试图计算所有值,其中 value = 1,而不是 value = 0。我只想返回查询,如果 value = 1 被找到 5 次或更多次。

TABLE 1 
-------------- 
ID    value      
-------------- 
1       1           
2       0           
3       1
4       1
5       1
6       0  
7       1
8       1

如果我们查看下面的表 2,则 value = 1 在该表中仅出现 2 次。所以我们将查询返回为 false,因为我们需要在表中找到 value = 1 超过 5 次才能返回 true。

TABLE 2 
-------------- 
ID    value      
-------------- 
1       1           
2       0           
3       1
4       0
5       0
6       0  
7       0
8       0

我想在查询中实现这一点,而不是在使用 php.ini 的查询之外使用 if 语句。 ie, if($results > 5) return true

谢谢

【问题讨论】:

这个不清楚,如果超过 5 行你想显示结果还是你想显示 value 大于 5 的行? 在表格中找到超过 5 个结果的地方。我的代码很混乱 我知道value > 1 THEN value ELSE 0 END 只计算 value = 1 而不是 0 的值。但是,如果我希望查询仅在找到 5 个或更多值时返回 true,我该怎么办 你想要什么?列值的总和? 为什么不使用 sum 而如果 sum>=5 则返回 true 【参考方案1】:

希望对您有所帮助:

您可以使用count_all获取计数,然后获取用户记录

$count = $this->db->count_all('users');

if ($count > 5)

  $query = $this->db->get('users');
  $records = $query->result_array();
  print_r($records);

【讨论】:

如果找到 5 个值怎么办? @JustBaron 在那里很容易理解,使用>= 啊,OP 问题与 OPs cmets 不同。道歉。【参考方案2】:

如果存在 5 条或多于 5 条记录,您可以使用以下查询获取数据

select *
from users u
where (
  select count(*)
  from users
) >= 5

Demo

这里是另一个demo 如果表少于 5 行

【讨论】:

【参考方案3】:

如果你想得到列值中的值的总和,你可以使用这个。

    $data = $this->db->get('users')->result_array();

    foreach ($data as $row) 
        $num_value[] = $row['value'];
    
    $num_value = array_sum($num_value);
    if($num_value > 5)
        echo 'value is more than 5';
    
    else
        echo 'value is equal or less than 5';
    

【讨论】:

以上是关于如何计算表中的值并返回true,仅当使用php mysql找到该值5次时的主要内容,如果未能解决你的问题,请参考以下文章

根据数组中的值检查值并使用 PHP 返回键

如何循环表中的每个值并找到平均值

如何防止在表中的多个下拉列表中选择相同的值并 POST 到服务器

Swift 计算 UITextFields 的值并返回值

如何设置输入类型文件的值并存储在php中的数据库中?

比较 2 个表中的值并生成具有差异的新表