thinkphp3.2.3子查询中遇到的错误

使用buildSql方法

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

当我们把里面的.‘ a‘去掉时运行会出现错误,因为每个派生出来的表(即那个子表)必须要有自己的别名,所以我们在后面必须给它起一个别名。

时间: 2024-10-13 05:18:53

thinkphp3.2.3子查询中遇到的错误的相关文章

子查询中包含不存在的列--居然不是bug!

1.现象 create table a as (select 1 as col_a); create table b as (select 2 as col_b)  select *  from a  where col_a in (select col_a from b) 其中,col_a只存在于table_a中,table_b中没有该字段,整条语句的结果是可以成功执行! 2.原因: 这个问题比较困惑,网上搜到的原因是"当子查询中的列名不存在时,自动向外层寻找". 也就是说,上面的查

子查询中的NULL问题

子查询返回有单行,多行和null值:适用于单行子查询的比较运算符是=,>,>=,<,<=<>和!=.适用于多行子查询的比较运算符是in,not in,any和any.在子查询中不可回避的是会返回null值,下面就这个问题来讨论一下. 在单行子查询中 SQL> select last_name,department_id from employees where department_id is null; LAST_NAME DEPARTMENT_ID -----

如何在子查询中实现多列过滤

什么是子查询: 当一个查询是另外一个查询的条件,称之为子查询. 常见子查询使用场景: 1.使用子查询可以避免由于子查询中的数据产生的重复. 2.使用子查询更符合语义,更好理解 -- 子查询user_id 重复时,不会导致结果重复 select user_name from qujing where id in (select user_id from user_kills); -- 使用join时,会重复 select a.user_name from qujing a join user_ki

子查询中不能使用limit或者in

select * from  wechat_account_info  where id in(select id from wechat_account_info where groupId ='8' ORDER BY id limit 15  ) as s 此句执行中会出现如下错误: [Err] 1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery' 原因: MYSQL子查询不支持

oracle子查询中not in后面不能为null值的理解

首先说说oracle中的null值吧. null在oracle中代表未知,表示可能有,也可能没有.任何与null值的普通运算都为null,但可以用一些函数来处理null值,oracle排序中默认null最大. 接着进入正文 这里in后面有null,能返回数据 但加了not后,就不能返回数据了 这里的in后面的句子可以理解为or拼接,即 id in (200,201,null)可以等价于id=200 or id=201or id=null, id not in (200,201,null)可以等价

mysql 子查询中 使用 limit

如果sql语句中的子查询包含limit 例如: select * from a where id in (select id from b limit 3) 会报错:This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME subquery' # 解决办法: 1.加一层子查询 例如:select * from a where id in (select t.id from (select id from b limit

子查询中可以包含order by 子句--(在from里面)

select a.* from dept a where a.deptno in (select b.deptno from emp b order by b.deptno)  --在where后面报错: ORA-00907: missing right parenthesis ; --from后面的视图是内联视图,可以使用order by --如上报错语句再嵌套一层变成from后面的内联视图就好了 --例如: select a.* from dept a where a.deptno in (

SQL 基础--&gt; 子查询

--========================= --SQL 基础--> 子查询 --========================= 一.子查询 子查询就是位于SELECT.UPDATE.或DELETE语句中内部的查询 二.子查询的分类 单行子查询 返回零行或一行 多行子查询 返回一行或多行 多列子查询 返回多列 相关子查询 引用外部SQL语句中的一列或多列 嵌套子查询 位于其它子查询中的查询 三.子查询语法 SQL> SELECT select_list FROM table WH

06. SQL 基础--&gt; 子查询

一.子查询 子查询就是位于SELECT.UPDATE.或DELETE语句中内部的查询 二.子查询的分类 单行子查询 返回零行或一行 多行子查询 返回一行或多行 多列子查询 返回多列 相关子查询 引用外部SQL语句中的一列或多列 嵌套子查询 位于其它子查询中的查询 三.子查询语法 SELECT select_list FROM table WHERE expr operator (SELECT select_list FROM table); 子查询(内部查询)在执行主查询之前执行一次,然后主查询