Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中获取mysql计数_Php_Mysql - Fatal编程技术网

在PHP中获取mysql计数

在PHP中获取mysql计数,php,mysql,Php,Mysql,我正在运行a查询以返回序列号已输入多次的所有结果,如下所示: SELECT * FROM spin WHERE `serial` in ( SELECT `serial` from spin group by `serial` HAVING count(*) > 1 ) ORDER BY date ASC $query = $this->db->prepare($sql);

我正在运行a查询以返回序列号已输入多次的所有结果,如下所示:

SELECT * FROM spin
            WHERE `serial` in (
            SELECT `serial` from spin group by `serial`
            HAVING count(*) > 1
            ) ORDER BY date ASC

    $query = $this->db->prepare($sql);
    $query->execute();
    return $query->fetchAll();
它按预期工作,但我想过滤掉它,只显示其中一个值及其出现次数。我猜它将需要某种不同的添加到查询中才能获得唯一的值,但不确定如何以最佳方式实现这一点

对于任何人来说,这就是我返回数据的方式(代码缩短):


电视连续剧
日期
此查询将执行以下操作:

SELECT *, COUNT(*) AS count
FROM spin
GROUP BY serial
HAVING count > 1
LIMIT 1

要避免嵌套的select语句,请使用GROUP BY

SELECT serial, COUNT(*) AS count FROM spin 
     GROUP BY serial HAVING count > 1 
     ORDER BY date ASC LIMIT 1;

以下是我的假设,您希望返回在
spin
表中重复的序列列表,但是,您只需将重复序列显示一次。使用当前查询,您将获取
spin
表中具有重复
序列的所有记录

下面的查询将返回计数大于1的所有序列,但是,它将只显示每个序列一次

SELECT `serial`, COUNT(`serial`) AS serial_count, `date`
FROM `spin`
GROUP BY `serial`
HAVING serial_count > 1
ORDER BY `date` ASC;
如果要查看所有日期,请尝试以下操作:

SELECT `serial`, COUNT(`serial`) AS serial_count, GROUP_CONCAT(`date`) AS dates
FROM `spin`
GROUP BY `serial`
HAVING serial_count > 1
ORDER BY `date` ASC;

如果要限制查询返回的记录数,可以在末尾添加限制。

是否要应用限制1?
SELECT `serial`, COUNT(`serial`) AS serial_count, GROUP_CONCAT(`date`) AS dates
FROM `spin`
GROUP BY `serial`
HAVING serial_count > 1
ORDER BY `date` ASC;