`
jmStatham
  • 浏览: 816 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

oracle中distinct关键字导致结果的再一次inner join失败的问题

阅读更多
         select a.*,c.* from
         (select jx.jxdxdh, jx.zhdh, jx.zhhm from jxdx_ckzh jx) a
         inner join
         (select /*distinct*/ b.jxdxdh,b.fpms
            from (select gx.jxdxdh,
                         wmsys.wm_concat(hy.hymc || gx.zlbl) fpms
                    from khdx_hy hy, dxgx_hyyjgx_ck gx
                   where hy.khdxdh = gx.khdxdh
                     and 20130421 between gx.qsrq and gx.jsrq
                     and gx.gxhslx = '1'
                   group by gx.jxdxdh
                  union all
                  select jx.jxdxdh, hy.hymc || '|100' as fpms
                    from jxdx_ckzh jx, khdx_hy hy
                   where hy.khdxdh = jx.khdxdh
                     and 20130421 > jx.khrq
                     and jx.gxhslx = '0') b) c
                     on a.jxdxdh = c.jxdxdh;                  

oracle中为什么上述语句中加distinct关键字后,会导致查询结果集数据丢失?
union all 中的第1部分的所有数据都丢失了!!不知道为何,我怀疑是使用distinct后,
就不能使用inner join关联结果集了,如此distinct只能放到最后。
 
 

 
            
            
            
            
            
            
分享到:
评论

相关推荐

    Oracle开发必备手册

    在Oracle SQL的学习中,第一章基本查询语句介绍了如何从数据库中提取信息,包括SELECT语句的基本结构、选择列、过滤行(WHERE子句)、聚合函数(如COUNT, SUM, AVG, MAX, MIN)以及DISTINCT关键字的使用。...

    Oracle入门语句

    9. **DISTINCT关键字**:用于去除结果集中的重复行。例如,`SELECT DISTINCT column1 FROM table_name;` 10. **LIKE和通配符**:在WHERE子句中,LIKE用于模式匹配,配合通配符 `%`(代表任意数量的字符)和 `_`...

    张烈-Oracle数据库讲义

    - **去除重复记录**:利用DISTINCT关键字去除查询结果中的重复记录。 - **模式匹配**:使用LIKE子句进行模式匹配查询。 #### 三、SQL函数 - **字符串函数**:如CONCAT用于连接字符串,TRIM用于去除字符串两端的空格...

    Oracle数据库讲义.pdf

    - **实验8**:使用DISTINCT关键字去除查询结果中的重复行。 - **实验9**:使用WHERE子句筛选符合条件的记录。 - **实验10**:利用LIKE关键字进行模式匹配查询。 - **实验11**:使用ORDER BY子句对查询结果进行...

    oracle尚观培训文档

    - **内连接(INNER JOIN)**:返回两个表中满足连接条件的所有行。 - **左外连接(LEFT OUTER JOIN)**:返回左表的所有行和右表中符合条件的行。 - **右外连接(RIGHT OUTER JOIN)**:返回右表的所有行和左表中...

    oracle(查询语句可能会有帮助)

    - DISTINCT关键字:去除重复行,如 `SELECT DISTINCT column FROM table`。 - ORDER BY子句:对结果集进行排序,如 `SELECT * FROM table ORDER BY column1, column2 DESC`。 - LIMIT和OFFSET:在Oracle中,可以...

    MLDN_oracle课堂笔记(全).pdf

    文档中提到了多表查询的典型代表——`JOIN`操作,通过它可以将两个或多个表中的数据通过共同的列进行关联查询,常用的方式包括内连接(INNER JOIN)、外连接(LEFT JOIN、RIGHT JOIN、FULL JOIN)等。 分组统计查询...

    oracle数据库学习笔记

    使用 `DISTINCT` 关键字可以在查询结果中去除重复行。例如: ```sql SELECT DISTINCT ZYMAS AS 专业名, ZXFAS AS 总学分 FROM XS; ``` 这段代码将返回 `XS` 表中的 `ZYMAS` 和 `ZXFAS` 列的不同组合,去除了重复的...

    Oracle Database 11g - SQL Fundamentals I

    5. 表连接:学习不同类型的表连接,如内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)和全连接(FULL JOIN),以及使用JOIN关键字进行多表查询。 6. 高级查询:掌握使用WHERE子句进行条件筛选,...

    Oracle Sql基础 Oracle Sql基础 Oracle Sql基础

    - iSQL*Plus是Oracle提供的一个命令行工具,用于执行SQL语句并查看结果。 - **1.5.2 SQL和iSQL\*Plus交互作用** - 通过iSQL*Plus可以方便地执行SQL语句,并且可以设置环境变量、查看执行计划等功能。 #### 二、...

    Oracle数据库测试 一些基础命令

    在`SELECT DISTINCT c.name FROM customer c INNER JOIN orders o ON c.cust_id = o.cust_id`中,通过customer表的cust_id与orders表的cust_id外键相匹配,显示已发出订单的所有客户的name。 11. 为了显示薪水在...

    鸿鹄论坛_oracle四大宝典之1:Oracle Sql基础.

    10. **相同的行**:为了避免查询结果中出现重复的行,可以使用`DISTINCT`关键字。 #### 三、约束和排序 ##### 2.2 用选择限定行 1. **限定语法**:使用`WHERE`子句来限制查询的结果集。 2. **使用WHERE字句**:如...

    Oracle SQL 必备参考

    - **DISTINCT关键字**:用于去除结果集中的重复行。 - **PIVOT和UNPIVOT操作**:将行转换为列(PIVOT)或反之(UNPIVOT),方便数据分析。 3. **DML操作**: - **INSERT语句**:向表中插入新记录。 - **UPDATE...

    Oracle认证课程目录

    - 内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)和全连接(FULL JOIN)。 - 外连接(OUTER JOIN)的使用场景和示例。 - **NOT IN vs NOT EXISTS vs 等值连接** - 比较这三个操作符的区别,...

    Oracle Sql基础 宝典系列1

    - **连接的类型**:包括内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)和全连接(FULL JOIN)。 - **表连接的原则**:在进行表连接时,应确保连接条件是有效的,避免不必要的数据冗余。 - **等值...

    Oracle教程.docx

    * INNER JOIN:从表中查询具有与其他表匹配的行记录 * LEFT JOIN:左连接,选择左表中具有,但右表中不具有的行记录 * RIGHT JOIN:右连接,选择右表中具有,但左表中不具有的行记录 * CROSS JOIN:从多个表中...

    SQL(Oracle)数据库讲义

    - **去除重复行**: 使用`DISTINCT`关键字可以去除查询结果中的重复行,例如`SELECT DISTINCT 列名 FROM 表名;`。 - **WHERE子句**: 用于过滤查询结果中的行,例如`SELECT * FROM 表名 WHERE 条件;`,可以基于条件...

    Oracle查询操作的学习笔记

    - **去重查询**:使用`DISTINCT`关键字可以去除查询结果中的重复行。例如,`SELECT DISTINCT job FROM emp;`。 - **条件筛选**:使用`WHERE`子句来过滤结果集。例如,`SELECT * FROM emp WHERE hiredate > '1982-01-...

Global site tag (gtag.js) - Google Analytics