【发布时间】:2017-03-16 16:35:11
【问题描述】:
表格格式: 表名类别:
id title
-----------------
1 xyz
2 abc
表名子类:
id category_id start_date status
----------------------------------------------------------
1 1 2016-11-03 1
2 1 2016-11-09 1
3 2 2016-10-03 1
4 3 2016-12-03 1
5 3 2016-12-05 1
6 5 2016-12-06 1
查询:
$date = date('Y-m-d');
$this->db->select('*');
$this->db->where('status',1);
$this->db->where('start_date >=',$date);
$this->db->order_by('start_date', 'asc');
$this->db->group_by('category_id');
$this->db->limit(4);
$query = $this->db->get('subcategory');
return $query->result();
我的问题是:我希望结果为 subcategory_id 1,4,6 。但是 group_by 和 order by 不起作用。
错误:
SELECT 列表不在 GROUP BY 子句中并且包含非聚合 列“dbname.subcategory.id”在功能上不依赖于 GROUP BY 子句中的列;这与 sql_mode=only_full_group_by SELECT * FROM (subcategory) WHERE status = 1 AND start_date >= '2016-11-03' GROUP BY category_id ORDER BY start_date asc LIMIT 4
【问题讨论】:
-
错误信息是什么??
-
SELECT 列表不在 GROUP BY 子句中,并且包含非聚合列“dbname.subcategory.id”,它在功能上不依赖于 GROUP BY 子句中的列;这与 sql_mode=only_full_group_by SELECT * FROM (
subcategory) WHEREstatus= 1 ANDstart_date>= '2016-11-03' GROUP BYcategory_idORDER BYstart_dateasc LIMIT 4不兼容> -
你的mysql版本是7吗?
-
将此行添加到您的
my.cnf文件sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"的末尾。然后重启mysql。
标签: php sql codeigniter