Mysql CodeIgniter查询组和多个字段中的计数值(相同类型)
我想在模型中构建一个查询,用相同类型的值对3列(在一个MySQL表中)中的值进行分组和计数:INT(11) 列1的值为:“1”“2”“3” 第2列的值为:“2”“3”“3” 第3列的值为:“1”“1”“1” 需要的结果是一个包含2个参数的数组:数字和此数字的计数器 例如:数字“1”和计数器“4” 在我的CI模型中:Mysql CodeIgniter查询组和多个字段中的计数值(相同类型),mysql,sql,codeigniter,Mysql,Sql,Codeigniter,我想在模型中构建一个查询,用相同类型的值对3列(在一个MySQL表中)中的值进行分组和计数:INT(11) 列1的值为:“1”“2”“3” 第2列的值为:“2”“3”“3” 第3列的值为:“1”“1”“1” 需要的结果是一个包含2个参数的数组:数字和此数字的计数器 例如:数字“1”和计数器“4” 在我的CI模型中: public function report_1() { $sql = 'SELECT col1, COUNT(col1) as counter1, col2, COUN
public function report_1() {
$sql = 'SELECT col1, COUNT(col1) as counter1, col2, COUNT(col2) as counter2,col2,COUNT(col3)
as counter3 FROM table_name GROUP BY ....';
$query = $this->db->query($sql);
return $query->result_array();
}
在我看来:
包含两列(“数字”和“计数器”)的HTML表格:
编号“1”“2”“3”
计数器“4”“2”“3”
提前感谢您提供的任何解决方案。要计算一个值在不同列中存在的时间,您需要首先连接这些列,然后计算每个值的出现次数 您可以使用
UNION ALL
试试这个:
SELECT
col_value,
count(*) AS counter
FROM
(
SELECT col_1 AS col_value FROM test_a
UNION ALL
SELECT col_2 AS col_value FROM test_a
UNION ALL
SELECT col_3 AS col_value FROM test_a
) AS temp_tb
GROUP BY
col_value
ORDER BY
counter DESC
我们使用将所有列连接到一个名为col_val的列中,然后使用计数和分组来获得每个值的出现次数。能否显示您期望的结果?什么?(Lorem ipsum-填充文本以便接受评论)它正在工作!非常感谢您提供此SQL代码!:)