【问题标题】:order by along with group by [duplicate]order by 和 group by [重复]
【发布时间】:2017-01-15 18:26:42
【问题描述】:
$this->db->select('*');
$this->db->from('messages');
$this->db->where('user_id_get', $data['users_id']);
$this->db->group_by('user_id_get');
//$this->db->order_by('id','DESC'); This doesn't work
$data["Query"] = $this->db->get();
如何在我的查询(codeigniter)中使用 order_by 和 group_by?
【问题讨论】:
标签:
php
mysql
sql
codeigniter
【解决方案1】:
我不熟悉codeigniter中的sql处理,但是groupBy user_id_get和select *是什么意思?
如果具有相同user_id_get-value 的多行被聚合并仅由其中一个表示,那么除user_id_get 之外的其他属性有什么值?实际上,只能取一个分组记录,一些数据库系统取第一个,其他数据库系统(和 SQL 标准)甚至禁止使用除 group by 子句中提到的属性之外的其他属性。例如,授予这个discussion at SO。
因此,如果只取组中的一条记录,那么对除 group-by 属性之外的属性进行排序意味着什么,因为这意味着对可能随机选择的值进行排序,对吧?
因此,如果您想获取特定用户的所有消息(如表达式where('user_id_get', $data['users_id'] 所示),那么group by user_id_get 具有误导性;我会省略 group by,只使用 order by。
希望我能正确理解您的要求,希望对您有所帮助。