mysql只找到5次值

ewm0tg9j  于 2021-06-24  发布在  Mysql
关注(0)|答案(3)|浏览(314)

我正在使用php和mysql构建一个类似用户的系统。
这是我的table

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

我试图用php编写一个mysql查询,如果total value count大于5,它只显示total value count。i、 只有在表中找到5条以上的记录时,e才会将查询返回为true。
有人能帮我吗?我试过很多东西。
这是我迄今为止尝试过的代码

$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";

 }

谢谢
(编辑-使问题更清楚)
因此,如果我们看下表(表1),值=1在表中被发现6次。所以查询应该返回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,值=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的查询之外使用if语句。 ie, if($results > 5) { return true} 谢谢

hgc7kmma

hgc7kmma1#

如果存在5条或5条以上的记录,可以使用以下查询来获取数据

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

演示
如果表的行数少于5行,下面是另一个演示

1cklez4t

1cklez4t2#

希望这能帮助您:
你可以用 count_all 获取计数,然后获取用户记录

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

if ($count > 5)
{
  $query = $this->db->get('users');
  $records = $query->result_array();
  print_r($records);
}
6rqinv9w

6rqinv9w3#

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

$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';
    }

相关问题