欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

tp5框架子查询,嵌套查询语句应用

程序员文章站 2022-04-04 08:00:40
1. 可用select(fales); 这样只生成sql语句,不执行$subQuery = Db::name('project_comment') ->field('Max(projectCommentId) AS projectCommentId,projectId') ->group('projectId') ->select(false);生成的$subQuery 打印如下:SELECT Max....

1. 可用select(fales);  这样只生成sql语句,不执行

$subQuery = Db::name('project_comment')
            ->field('Max(projectCommentId) AS projectCommentId,projectId')
            ->group('projectId')
            ->select(false);

生成的$subQuery 打印如下:

SELECT Max(projectCommentId) AS projectCommentId,projectId FROM `wst_project_comment` GROUP BY `projectId`

 

2.用buildSql() ,用这个生成的语句会被自动加上()来区分。强烈建议。

$subQuery = Db::name('project_comment')
            ->field('Max(projectCommentId) AS projectCommentId,projectId')
            ->group('projectId')
            ->buildSql();

生成的$subQuery 打印如下:

( SELECT Max(projectCommentId) AS projectCommentId,projectId FROM `wst_project_comment` GROUP BY `projectId` )

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

-------------------------------------------------------------------------------------------------------------------------

然后用上面2的结果,关联下面的语句。就可以得到嵌套查询,子查询结果 (注意:关联时设别名的空格不要太多,容易报错)

$subQuery2 = Db::table($subQuery.'  tt')
            ->join( 'project_comment cc ','tt.projectCommentId = cc.projectCommentId','inner')
            ->field('cc.userType,cc.content,cc.createTime,cc.image')
            ->select();

用2是因为他生成的语句带有();可以不用再加。

 

 

 

 

本文地址:https://blog.csdn.net/aldsong123/article/details/107638451

相关标签: tp