在PHP中获取mysql计数
我正在运行a查询以返回序列号已输入多次的所有结果,如下所示:在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);
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;