`
utopialxw
  • 浏览: 369875 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

层次查询where条件容易混淆点

阅读更多
CREATE TABLE "AAA1"
(
	"OID" VARCHAR2(50) NOT NULL,
	"NAME" VARCHAR2(50),
	"PID" VARCHAR2(50),
	"SORT" INT,
	"VERSION" CHAR(10),
	PRIMARY KEY("OID", "VERSION")
);
COMMIT;
DELETE FROM AAA1;
insert into "AAA1" ("OID","NAME","PID","SORT","VERSION") values ('0', '事项', '-1', 1, '2018-01-01');
insert into "AAA1" ("OID","NAME","PID","SORT","VERSION") values ('1', '事项1', '0', 1, '2018-01-01');
insert into "AAA1" ("OID","NAME","PID","SORT","VERSION") values ('2', '事项2', '0', 2, '2018-01-01');
insert into "AAA1" ("OID","NAME","PID","SORT","VERSION") values ('11', '事项11', '1', 1, '2018-01-01');
insert into "AAA1" ("OID","NAME","PID","SORT","VERSION") values ('12', '事项12', '1', 2, '2018-01-01');
insert into "AAA1" ("OID","NAME","PID","SORT","VERSION") values ('21', '事项21', '2', 1, '2018-01-01');
insert into "AAA1" ("OID","NAME","PID","SORT","VERSION") values ('211', '事项211', '21', 1, '2018-01-01');
insert into "AAA1" ("OID","NAME","PID","SORT","VERSION") values ('212', '事项212', '21', 2, '2018-01-01');

insert into "AAA1" ("OID","NAME","PID","SORT","VERSION") values ('0', '事项', '-1', 1, '2018-03-01');
insert into "AAA1" ("OID","NAME","PID","SORT","VERSION") values ('1', '事项1', '0', 1, '2018-03-01');
insert into "AAA1" ("OID","NAME","PID","SORT","VERSION") values ('2', '事项2', '0', 2, '2018-03-01');
insert into "AAA1" ("OID","NAME","PID","SORT","VERSION") values ('11', '事项11', '1', 1, '2018-03-01');
insert into "AAA1" ("OID","NAME","PID","SORT","VERSION") values ('12', '事项12', '1', 2, '2018-03-01');
insert into "AAA1" ("OID","NAME","PID","SORT","VERSION") values ('21', '事项21', '2', 1, '2018-03-01');
insert into "AAA1" ("OID","NAME","PID","SORT","VERSION") values ('211', '事项211', '21', 1, '2018-03-01');
insert into "AAA1" ("OID","NAME","PID","SORT","VERSION") values ('212', '事项212', '21', 2, '2018-03-01');
COMMIT;

--sql1 
select "OID","NAME","PID","SORT","VERSION"
from "AAA1"
where version = '2018-03-01'
connect by prior OID = PID AND VERSION = '2018-03-01'
START WITH OID = '0' AND VERSION = '2018-03-01'
order siblings by sort;

--sql2 
select "OID","NAME","PID","SORT","VERSION"
from "AAA1"
--where version = '2018-03-01'
connect by prior OID = PID AND VERSION = '2018-03-01'
START WITH OID = '0' AND VERSION = '2018-03-01'
order siblings by sort;

--sql3 
select "OID","NAME","PID","SORT","VERSION"
from "AAA1"
where version = '2018-03-01'
connect by prior OID = PID --AND VERSION = '2018-03-01'
START WITH OID = '0' --AND VERSION = '2018-03-01'
order siblings by sort;

--sql4 
select "OID","NAME","PID","SORT","VERSION"
from "AAA1"
where version = '2018-03-01'
connect by prior OID = PID --AND VERSION = '2018-03-01'
START WITH OID = '0' AND VERSION = '2018-03-01'
order siblings by sort;


请注意,在层级表中若存在多个版本的话,只查询某个版本信息的情况时,若仅仅在where中书写where会把其他VERSION的也查询出来,connect by和start with也需要限定查询条件,只有sql1是正确的查询方式
分享到:
评论

相关推荐

    SQL WHERE 条件解析器

    在实际应用中,`SQL WHERE 条件解析器`通常与前端界面结合,用户可以通过界面上的控件设置查询条件,后端服务接收到这些条件后,通过解析器生成相应的SQL查询,从而返回符合用户需求的数据。 总结来说,`SQL WHERE ...

    java调用shell向DataX传递参数,where条件,包含特殊字符

    在JSON配置文件中,where条件可能被用来构造SQL查询,如: ```json { "job": { "content": [ { "reader": { "name": "oraclereader", "parameter": { "where": "${condition}", ... } }, "writer": { ...

    java调用shell向DataX传参,带where条件,特殊字符

    在实际应用中,我们可能需要根据特定的业务逻辑,如where条件,来定制数据同步的范围。在Java程序中调用Shell命令并传入带有特殊字符的参数时,会遇到一些挑战,因为Shell和DataX对特殊字符的处理方式可能不同。 ...

    C# List多条件聚合查询方法.txt

    C# List多条件查询聚合查询,List条件查询Where与GroupBy聚合查询

    where 条件查询.sql

    where 条件查询.sql

    Yii Framework 2.0 Where条件拼接 pdf

    为了构建复杂的查询,Yii 2.0的Active Record支持多种查询方法,其中where条件拼接是构建复杂查询条件的核心技术之一。 where条件拼接在Yii 2.0中主要通过ActiveQuery类实现。ActiveQuery类可以链式调用多种方法来...

    C#实现多条件组合查询

    3. **Entity Framework**:如果是在数据库上下文中进行查询,可以利用Entity Framework的`DbSet.Where()`方法,配合上面构建的动态条件,实现多条件组合查询。例如: ```csharp var context = new YourDbContext();...

    小程序多条件查询

    本文将详细讲解如何实现小程序中的多条件查询功能,以及它为何能够快速、简单易懂并适用于各种场景。 首先,我们需要理解什么是多条件查询。在数据库和信息检索领域,多条件查询是指用户可以根据多个不同的属性或...

    oracle where case when where后面跟case when

    在Oracle数据库中,`WHERE`子句是SQL查询语句的一部分,用于指定查询条件,而`CASE WHEN`语句则是一种条件表达式,允许我们基于不同的条件返回不同的值。将`CASE WHEN`嵌套在`WHERE`子句中,可以实现更复杂的逻辑...

    MySQL高级优化之-查询逻辑及where条件提取.pdf

    在优化查询时,关注点应放在WHERE条件的提取和优化上。有效的WHERE条件可以显著减少扫描的行数,提高查询效率。例如,使用索引,避免全表扫描;尽可能地让数据库引擎利用索引,而不是进行全表扫描或排序;避免在...

    SQL中on条件与where条件的区别

    SQL中on条件与where条件的区别基础知识

    浅析SQL中WHERE EXISTS子查询.pdf

    WHERE EXISTS子查询的执行流程可以理解为:首先检索外查询表中的第一行,再处理内查询,若内查询结果非空(表中存在满足条件的元组),则外查询WHERE EXISTS条件为真,将对应的外层第一行元组取出;然后再检索外查询...

    hibernate hql where语句拼接工具类

    WHERE子句用于在查询结果中指定特定的条件,类似于SQL中的WHERE。例如,如果你有一个User实体,你可能想要查询所有年龄大于30岁的用户,HQL语句可能如下所示: ```java String hql = "FROM User WHERE age > :age";...

    php 表达式where查询

    PHP 表达式 WHERE 查询是一种灵活且强大的查询方式,它允许开发者使用各种查询语法来构建复杂的查询条件。本文将详细介绍 PHP 表达式 WHERE 查询的使用格式、支持的查询语法和示例。 使用格式 ---------- PHP ...

    Sql Server参数化查询之where in和like实现详解

    其中,where in和like是两个常用的查询条件,然而它们的参数化实现却不是那么简单。本文将详细介绍where in和like的参数化查询实现方法。 首先,让我们来看一下where in的参数化查询实现。使用Sql Server,直接拼...

    Oracle 实战SQL层次查询

    - **START WITH**:设置层次查询的起始条件。 - **CONNECT BY PRIOR**:定义父节点和子节点之间的关系。 ##### 示例数据 以EMPLOYEES表为例,假设该表中有如下字段:`empno`(员工编号)、`mgr`(上级编号)、`...

    ThinkPHP5联合(关联)查询、多条件查询与聚合查询实例详解

    ThinkPHP5是一个广泛使用的PHP开发框架,它提供了多种数据库操作的方法,特别是在数据查询方面提供了非常丰富的API,方便开发者进行联合查询、多条件查询以及聚合查询等操作。 ### 联合(关联)查询 在ThinkPHP5中,...

    SQL语句之条件查询-WHERE(where).docx

    在SQL查询中,`WHERE`子句是至关重要的部分,它允许我们根据特定的条件过滤结果集。在本文中,我们将深入探讨`WHERE`子句的使用,包括条件表达式筛选、逻辑表达式筛选以及模糊查询等不同类型的筛选方法。 首先,让...

    MyBatis拦截器 添加查询条件动态修改sql

    通过mybatis的拦截器,实现为所有sql(或指定sql) 统一添加查询条件,譬如通过线程变量传递某参数(日期),来实现对指定参数的数据筛选,而不需要在每个查询前,手动将该条件注入到查询中。因该资料网络较少,故特此...

    MySQL左联多表查询where条件写法示例

    而通过子查询预筛选,我们可以确保where条件只影响子查询的结果,而不影响左连接的整体行为,从而得到更精确的查询结果。在实际的数据库操作中,理解并灵活运用这些技巧对于优化查询性能和获取准确数据至关重要。

Global site tag (gtag.js) - Google Analytics