码迷,mamicode.com
首页 > 数据库 > 详细

ThinkPHP3.2 SQL alias 子查询

时间:2015-08-04 23:24:19      阅读:365      评论:0      收藏:0      [点我收藏+]

标签:

SELECT info_key, info_value, info_status, edit_time
FROM (SELECT * FROM `detail` WHERE login = ‘abc@abc.com‘ ORDER BY edit_time DESC  ) AS aaa
GROUP BY info_key


希望通过Thinkphp实现基于alias的子查询,终于参考下面这个文章实现了。

http://www.thinkphp.cn/update/122.html


如下是帮助手册里的原文。(搜索子查询)


从3.0版本开始新增了子查询支持,有两种使用方式:

1、使用select方法当select方法的参数为false的时候,表示不进行查询只是返回构建SQL,例如:

// 首先构造子查询SQL 
$subQuery = $model->field(‘id,name‘)->table(‘tablename‘)->group(‘field‘)->where($where)->order(‘status‘)->select(false);

当select方法传入false参数的时候,表示不执行当前查询,而只是生成查询SQL。

2、使用buildSql方法

$subQuery = $model->field(‘id,name‘)->table(‘tablename‘)->group(‘field‘)->where($where)->order(‘status‘)->buildSql();

调用buildSql方法后不会进行实际的查询操作,而只是生成该次查询的SQL语句(为了避免混淆,会在SQL两边加上括号),然后我们直接在后续的查询中直接调用。

// 利用子查询进行查询 $model->table($subQuery.‘ a‘)->where()->order()->select()

构造的子查询SQL可用于ThinkPHP的连贯操作方法,例如table where等。


ThinkPHP3.2 SQL alias 子查询

标签:

原文地址:http://my.oschina.net/vvcumt/blog/487805

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!