Phalapi 中Union和Union All的用法

有时候在进行数据库查询的时候会用到union查询,但是查询的时候会发现两个limit只有一个是有效的,如下查询

select * from table where status = 0 limit 10
union
select * from table where status = 1 limit 30

这样的语句实际的查询效果是这样的,如下:

(select * from table where status = 0 limit 10)
union
(select * from table where status = 1) limit 20

如果想让limit有效,必须要把limit放到括号当中才行。

Phalapi中notorm的写法是,如下:

  public function getSogouGuojiList() {
        $result = array();
        $query = DI()->notorm->table->select(‘id,title,content‘)
                ->where(‘status =?‘, 0)->order(‘id desc‘)
                ->limit(10);
        $query2 = DI()->notorm->table->select(‘id,title,content‘)
                ->where(‘status =?‘, 0)->order(‘id desc‘)
                ->limit(20);
        foreach ($query->union($query2) as $row) {
            $result[] = $row;
        }
        return $result;
   }

注:如果有不对的地方还请多多指教。

时间: 2024-10-05 06:43:55

Phalapi 中Union和Union All的用法的相关文章

SQL中JOIN和UNION区别及用法

转载:http://chengheng1984.blog.163.com/blog/static/17947412201012215738844/ JOIN用于按照ON条件联接两个表,主要有四种: INNER JOIN:内部联接两个表中的记录,仅当至少有一个同属于两表的行符合联接条件时,内联接才返回行.我理解的是只要记录不符合ON条件,就不会显示在结果集内. LEFT JOIN / LEFT OUTER JOIN:外部联接两个表中的记录,并包含左表中的全部记录.如果左表的某记录在右表中没有匹配记

sql中union和union all的用法

如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字.union(或称为联合)的作用是将多个结果合并在一起显示出来. union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复. union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序:union在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删

MySQL UNION 与 UNION ALL 语法与用法

1.MySQL UNION 语法 MySQL UNION 用于把来自多个 SELECT 语句的结果组合到一个结果集合中.语法为: SELECT column,... FROM table1 UNION [ALL] SELECT column,... FROM table2 ... 在多个 SELECT 语句中,对应的列应该具有相同的字段属性,且第一个 SELECT 语句中被使用的字段名称也被用于结果的字段名称. 1.1.UNION 与 UNION ALL 的区别 当使用 UNION 时,MySQ

解决部分月份绩效无法显示的问题:timestamp\union al\autocommit等的用法

绩效部同事反映部分员工绩效在查询时无法显示,并给出了两个工号.这两个工号对应绩效全部正常审批完成,但在绩效管理模块却无法显示.绩效管理采用分页查询,查询语句为: <!-- 绩效查询集合  --> <select id="queryList" resultMap="PerformanceResultMap"  parameterType="com.fx.oa.module.per.performance.api.shared.domain.

union和union all用法

工作中,遇到同事之前写的oracle语句中有一个union all,并且很多地方都用到了.便在网上查了一下用法,一下是自己的理解. union  (联合)将两个或者多个结果集合并. 在使用时,两个结果集要有相同的列,并且字段类型需要一致. select id,name from tableAunion allselect name from tableB 消息 205,级别 16,状态 1,第 1 行使用 UNION.INTERSECT 或 EXCEPT 运算符合并的所有查询必须在其目标列表中有

数据库中union 与union all 的区别

union 将两个表连接后删除其重复的项: union all 将两个表连接都不删除其重复的项. 数据库中,UNION和UNION ALL都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同. UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果.实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表UNION.如: select * from users1 union select * from user2 这个

MySQL中UNION和UNION ALL的使用

在数据库中,UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同. MySQL中的UNION UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果.实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表UNION.如: select * from gc_dfys union select * from ls_jg_dfys 这个SQL在运行时先取出两个表的结果,再用排序空间进行排

Sql中的union和union all的讲解

SQL UNION 和 UNION ALL操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每条 SELECT 语句中的列的顺序必须相同. 假设我们有一个表Student,包括以下字段与数据: drop table student; create table student(id int primary key,name nvarchar2(50) not null,s

sql中Union和union all的使用

该文转载自:http://www.cnblogs.com/chaobaojun/archive/2009/12/24/1631508.html 在MS-SQL如果将两个或更多查询的结果组合为单个结果集,该结果集包含联合查询中的所有查询的全部行,常用的方法如下: 一.       使用union 或union All语句 1.   union 与 union all语句的区别 ?         UNION 组合多个表(或结果集)并将其作为单个结果集返回; ?         UNION ALL