在数据表里筛选出每一人的时间最新的一条记录

mysql取分组后最新的一条记录,下面两种方法.一种是先筛选 出最大和最新的时间,在连表查询.一种是先排序,然后在次分组查询(默认第一条),就是最新的一条数据了

方法一:【连表查询,推荐】
#select * from t_assistant_article as a, (select max(base_id) as base_id, max(create_time) as create_time from t_assistant_article as b group by base_id ) as b where a.base_id=b.base_id and a.create_time = b.create_time

方法二:(全表扫描,不推荐)
#select base_id,max(create_time), max(article_id) as article_id from t_assistant_article as b group by base_id
select * from (select * from t_assistant_article order by create_time desc) as a group by base_id

【摘自:http://bbs.csdn.net/topics/390867651】

Yii2打印SQL语句

通过以下方式可以打印SQL语句:

 

SQL去重查询最新数据

SQL批量查询时,希望过滤部分重复数据,取每一数据元的最新记录:

思路:1.先按ID排序,2.在排序后的结果集中搜索,并按需要唯一的元素进行group by

ThinkPHP之SQL语句

问题:

使用ThinkPHP的CURD方法快捷执行SQL语句时,出现部分字段值被解释成字段。如:

被翻译成了:

SELECT * FROM `user` WHERE ( `val_1` = 'value_a' ) AND ( `val_2` = value_b ) AND ( `val_3` = 'value_c' )

导致查询语句错误。正确时应该被翻译成:

原因:

ThinkPHP未把变量$value_2当成字符串处理,所以翻译时没有为其加单引号。

解决:

将变量$value_2强制转换成字符串即可。即