如何解决mysql中“子查询返回超过1行”的错误?
我在codeigniter中提出了如下查询如何解决mysql中“子查询返回超过1行”的错误?,mysql,codeigniter,Mysql,Codeigniter,我在codeigniter中提出了如下查询 $query = $this->db->query('SELECT tanggal, ( SELECT COUNT(*) from absensi_siswa where kehadiran="alfa" GROUP BY tanggal ) AS alfa, ( SELECT COUNT(*) from absensi_siswa where kehadiran="izin" GROUP B
$query = $this->db->query('SELECT tanggal,
( SELECT COUNT(*) from absensi_siswa where kehadiran="alfa" GROUP BY tanggal ) AS alfa,
( SELECT COUNT(*) from absensi_siswa where kehadiran="izin" GROUP BY tanggal ) AS izin,
( SELECT COUNT(*) from absensi_siswa where kehadiran="hadir" GROUP BY tanggal ) AS hadir,
( SELECT COUNT(*) from absensi_siswa where kehadiran="sakit" GROUP BY tanggal ) AS sakit
FROM absensi_siswa GROUP BY tanggal');
return $query->result();
您的每个子条款选择count*。。返回超过1行,从您的查询中,我假设您需要基于kehadiran的不同值的单个计数,您可以将查询简化为
SELECT tanggal,
SUM(CASE WHEN kehadiran="alfa" THEN 1 ELSE 0 END) AS alfa,
SUM(CASE WHEN kehadiran="izin" THEN 1 ELSE 0 END) AS izin,
SUM(CASE WHEN kehadiran="hadir" THEN 1 ELSE 0 END) AS hadir,
SUM(CASE WHEN kehadiran="sakit" THEN 1 ELSE 0 END) AS sakit
FROM absensi_siswa
GROUP BY tanggal
使用mysql,您可以使sum子句更短,比如将sumkehadiran=alfa作为alfa,将表达式放在suma=a中将返回布尔值0/1或true/false,您将得到基于表达式的计数。祝您有个美好的一天。