![](/img/trans.png)
[英]MYSQL SELECT unique values from column where column2 = value & count how many times each unique value was found
[英]how to count values from a table and return true, only if the value is found 5 times using php mysql
我正在使用PHP和MySQL构建类似用户的系统。
这是我的表
--------------
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";
}
谢谢
(编辑 - 使问题更清晰)
因此,如果我们查看下表(表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,那么在该表中只找到2次value = 1。 所以我们将查询返回为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}
谢谢
希望这个能对您有所帮助 :
您可以使用count_all
来获取计数,然后获取用户记录
$count = $this->db->count_all('users');
if ($count > 5)
{
$query = $this->db->get('users');
$records = $query->result_array();
print_r($records);
}
如果要获取列值中的值的总和,可以使用此值。
$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';
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.