`
czwlucky
  • 浏览: 49916 次
  • 性别: Icon_minigender_1
  • 来自: 河南郑州
社区版块
存档分类
最新评论

根据条件关联查询(条件关联)

阅读更多

在个别业务中,可能需要根据关联表与主表中的关联关系进行连接才能得到想要的结果, 这有点像条件编译. 符合条件的才去做关联,不符合条件的就不做关联(或说让关联条件失败)

 

环境: oracle

请看代码:

create table A1(id number, val number);
create table A2(id number, type varchar2(2), val number, anyvalue varchar2(30));

insert into a1 values(1, 50);
insert into a1 values(1, 500);
insert into a1 values(2, 100);
insert into a1 values(2, 150);
insert into a1 values(3, 200);
insert into a1 values(3, 250);
insert into a1 values(4, 150);
insert into a1 values(4, 500);

insert into a2 values(1, '>', 100, '>100');
insert into a2 values(1, '<=', 100, '<=100');
insert into a2 values(2, '<', 150, '<150');
insert into a2 values(3, '<=', 200, '<=200');
insert into a2 values(4, '>=', 150, '>=150');

select * from a1;
select * from a2;

select * from a1, a2
where a1.id = a2.id
 and (case a2.type 
        when '>' then
           (case when a1.val > a2.val then 1 else 0 end)
        when '>=' then
           (case when a1.val >= a2.val then 1 else 0 end)
        when '<=' then
           (case when a1.val <= a2.val then 1 else 0 end)
        when '<' then
           (case when a1.val < a2.val then 1 else 0 end)
        else
          0
        end) = 1;

drop table a1 purge;
drop table a2 purge;

 

加上执行结果,方便理解:

SQL> select * from a1;
 
        ID        VAL
---------- ----------
         1         50
         1        500
         2        100
         2        150
         3        200
         3        250
         4        150
         4        500
 
8 rows selected
SQL> select * from a2;
 
        ID TYPE        VAL ANYVALUE
---------- ---- ---------- ------------------------------
         1 >           100 >100
         1 <=          100 <=100
         2 <           150 <150
         3 <=          200 <=200
         4 >=          150 >=150
SQL> select * from a1, a2
  2  where a1.id = a2.id
  3   and (case a2.type
  4          when '>' then
  5             (case when a1.val > a2.val then 1 else 0 end)
  6          when '>=' then
  7             (case when a1.val >= a2.val then 1 else 0 end)
  8          when '<=' then
  9             (case when a1.val <= a2.val then 1 else 0 end)
 10          when '<' then
 11             (case when a1.val < a2.val then 1 else 0 end)
 12          else
 13            0
 14          end) = 1;
 
        ID        VAL         ID TYPE        VAL ANYVALUE
---------- ---------- ---------- ---- ---------- ------------------------------
         1         50          1 <=          100 <=100
         1        500          1 >           100 >100
         2        100          2 <           150 <150
         3        200          3 <=          200 <=200
         4        150          4 >=          150 >=150
         4        500          4 >=          150 >=150
 
6 rows selected

 

0
0
分享到:
评论

相关推荐

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

    无论是进行关联查询、多条件筛选还是聚合计算,开发者都可以通过简洁的API和流畅的链式调用实现复杂的数据库操作。这样的设计不仅简化了代码的编写,还提高了程序的可读性和维护性。实际开发过程中,结合具体的业务...

    浅谈Linq to sql 的多表关联与动态条件查询

    浅谈Linq to sql 的多表关联与动态条件查询 Linq to sql 是一种强大的数据查询语言,它可以帮助开发者快速、高效地访问和操作数据库数据。在本文中,我们将讨论 Linq to sql 的多表关联和动态条件查询这两个重要的...

    01.hive查询语法--基本查询--条件查询--关联查询.mp4

    01.hive查询语法--基本查询--条件查询--关联查询.mp4

    kettle实现SQL关联查询

    "Merge Join" Step就是其中之一,它允许用户实现类似SQL中的各种类型关联查询,包括INNER JOIN、LEFT JOIN、RIGHT JOIN以及FULL JOIN。 INNER JOIN是SQL中的一种基本联接类型,它返回两个表中存在匹配的记录。在...

    ACCESS数据库多表关联查询例程

    你可以根据需要指定表间的关联条件。 2. 连接查询:通过指定连接条件,将多个表的数据合并成一个结果集。连接类型包括内连接(只返回满足连接条件的记录)、左连接(返回左表所有记录及右表匹配的记录)、右连接...

    hibernateHQL关联查询

    ### Hibernate HQL 关联查询详解 #### 一、引言 在进行数据库操作时,关联查询是必不可少的一部分,尤其在处理复杂的数据结构时更是如此。Hibernate作为一种流行的Java持久层框架,提供了强大的对象关系映射(ORM...

    SQL根据表中某列队值选择关联不同的表

    `CASE`语句可以在SQL查询中起到条件判断的作用,可以用来根据某个字段的值返回不同的结果或执行不同的逻辑。本例中我们将使用`CASE`语句结合多表关联来实现需求。 **表结构和数据**: - **表1 (T)** 字段:`id`,...

    易语言ACCESS数据库多表关联查询例程

    2. 准备SQL语句:根据需求编写JOIN查询,确保包含正确的表名、字段名和关联条件。 3. 执行SQL查询:使用“执行SQL”命令执行准备好的SQL语句。 4. 处理查询结果:查询成功后,使用“获取记录数”、“获取字段值”等...

    关联关系按条件查询细

    在软件开发中,尤其是在涉及到数据库操作的场景,关联关系按条件查询是一项基础且重要的技能。关联关系是指在数据库设计中,不同表之间的联系,如一对一、一对多、多对多等。本文主要讨论了如何在Java环境下,利用...

    Oracle基础查询关联查询练习题.docx

    Oracle 基础查询关联查询练习题 Oracle 基础查询关联查询练习题中涉及到多种查询类型,包括基础查询、关联查询、分组查询等。下面我们将对每个练习题的知识点进行详细解释。 1. 基础查询 基础查询是指从数据库中...

    Oracle sql语句多表关联查询

    Oracle SQL 语句多表关联查询 Oracle SQL 语句多表关联查询是数据库管理系统中的一种常见查询方式,它可以从多个表中检索数据,满足业务需求。本文将详细介绍 Oracle SQL 语句多表关联查询的知识点,包括字符串和...

    mysql关联查询

    MySQL关联查询是数据库操作中的重要概念,用于在多个表之间建立连接,以便从不同表中检索相关数据。关联查询能够让我们在单个SQL语句中处理来自多个表的数据,极大地提高了数据查询的效率和灵活性。这里我们将深入...

    经典表关联与多表查询

    经典表关联与多表查询 经典表关联与多表查询是数据库系统中最基本也是最重要的概念之一。它允许用户从多个相关联的表中查询数据,以获取所需的信息。本资源将详细介绍经典表关联与多表查询的目的、基本概念、语法...

    JavaScript关联外挂表查询

    文件"JavaScript关联查询.pdf"可能包含了详细的API使用示例和教程,而"数据"和"关联查询"可能包含了实际的测试数据和查询实例,供你进一步学习和实践。 总之,JavaScript关联外挂表查询是SuperMap iClient 6R for ...

    mysqldump 备份多张相关联的表,并且执行有条件的筛选

    ### 五、解决策略:逐表筛选与关联查询 正确的做法是先对每张表独立应用条件筛选,再通过SQL查询关联这些表的数据。例如,首先筛选出`mytable_1`中`cust_id`为1、2或3的客户信息: ``` mysqldump -u root -p root ...

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

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

    三表关联查询

    其中,`table1`, `table2`, `table3` 分别代表你要关联的三个表格,`condition1` 和 `condition2` 是定义这些表格之间关联条件的表达式。 四、应用示例 假设我们有三个表格:`Employees`, `Departments`, 和 `...

    利用数据库系统表实现多表关联查询

    ### 利用数据库系统表实现多表关联查询 在现代数据管理中,多表关联查询是数据处理和信息检索中的关键技术之一。对于大型数据库系统,有效地执行多表关联查询不仅能够提升数据处理效率,还能增强应用程序的灵活性和...

    (3)Kettle-----关联字典表的三种方法

    这通常需要仔细检查JOIN条件和数据质量,确保所有的关联规则都得到正确执行。 总结来说,Kettle提供了多种方式来处理字典表的关联,包括简单的值映射、灵活的表输入查询以及复杂的MERGER.JOIN。根据实际业务需求和...

    解决Django中多条件查询的问题

    这样,Django会根据字典中的键值对生成相应的WHERE子句,执行多条件查询。 前端部分,使用jQuery和Ajax提交表单,获取数据并渲染到页面。HTML页面需要引入jQuery库、jQuery Form插件和Template.js,以支持异步提交...

Global site tag (gtag.js) - Google Analytics