`

连表查询 去重 distinct失效,使用group by

 
阅读更多

select A.cata_id cata_id,A.table_name_cn table_name_cn, A.table_name_en table_name_en,C.is_public is_public,C.title title

from data_catalog_meta A,data_catalog_group_link B,data_catalog C

where A.cata_id = B.cata_id = C.cata_id group by A.table_name_en 

 

 出错: 多表联查时  条件  需要  分开写,where A.cata_id = B.cata_id and B.cata_id= C.cata_id

 

此外:

连表查询 去重之后的 总条数  不能直接用count  因为group by的原因,使得 分别查出分组后的各个组的条数

 

可以使用临时表查询

但是要注意 ,临时表必须要有个别名 (Every derived table must have its own alias),即as

 

select count(cata_id) FROM (

select A.cata_id cata_id

from data_catalog_meta A,data_catalog_group_link B,data_catalog C

where A.cata_id = B.cata_id = C.cata_id

group by A.table_name_en

) as total;

  • 大小: 90.3 KB
  • 大小: 922.3 KB
分享到:
评论

相关推荐

    Oracle表中重复数据去重的方法实例详解

    总的来说,Oracle提供了多种方法来处理重复数据,包括`DISTINCT`、`UNION ALL`和`GROUP BY`等。但针对大量数据,使用分析函数结合`DELETE`语句通常更有效率。在实际应用中,应根据具体需求选择合适的方法,并注意...

    SQLServer优化

    - GROUP BY和HAVING应尽量在WHERE之后使用,以减少计算量。 - 避免在WHERE子句中对索引字段进行函数运算,保持字段顺序与索引顺序一致,使用“>=”代替“>”。 - 使用EXISTS代替COUNT(1)检查记录存在,COUNT(1)比...

    ORACLE SQL性能調整

    在查询中,使用EXISTS代替DISTINCT可以减少数据排序和去重操作,提升查询速度。 #### 17. 识别低效执行的SQL语句 通过SQL监控工具,如AWR报告,可以识别出执行效率低下的SQL语句,并对其进行优化。 #### 18. 使用...

    Oracle SQL性能优化.doc

    - **查询提示**:通过使用查询提示来指导优化器的行为,可以提高查询效率。 #### 三十八、用WHERE替代ORDER BY - **排序优化**:在可能的情况下,使用WHERE子句替代ORDER BY子句,可以减少排序操作带来的性能开销...

    PLSQL程序优化和性能分析方法

    12. GROUP BY优化:合理使用GROUP BY和HAVING,避免不必要的数据处理。 13. 避免无谓的ORDER BY,除非业务需求明确要求排序。 14. 用WHERE子句替换HAVING子句,WHERE更适合过滤,HAVING用于聚合后过滤。 15. 使用表...

    oracle优化技术

    6. **DISTINCT与EXISTS替换**:使用`EXISTS`代替`DISTINCT`可以提高查询效率,因为`EXISTS`仅检查是否存在匹配项,而`DISTINCT`需进行排序和去重操作。 7. **UNION操作**:`UNION`操作会合并结果并进行排序,效率较...

    面试必问、工作实用的MYSQL进阶之SQL优化大全

    - FROM/JOIN -> ON -> WHERE -> GROUP BY -> 聚合函数 -> HAVING -> SELECT -> DISTINCT -> ORDER BY -> LIMIT 4. **SQL优化技巧**: - 使用`EXPLAIN`分析SQL执行计划,关注`type`和`extra`,目标是降低全表扫描...

    数据库面试题索引sql优化

    - 对于GROUP BY和DISTINCT操作,如果可能的话,考虑先过滤记录再进行分组或去重,以减少处理的数据量。 8. **使用物化视图:** - 物化视图可以在数据库级别预先计算复杂查询的结果,并将其存储起来供后续查询使用...

    OracleSql脚本书写规范

    如果可以在FROM和WHERE子句中完成过滤,就不要在GROUP BY后的HAVING子句中进行,因为HAVING是在聚合后进行的,相对消耗更多资源。 **7. 减少对表的查询** 通过JOIN操作和子查询,尽量减少对相同表的重复查询,减少...

    ORACLE+SQL性能调整

    46. **优化 GROUP BY**:使用索引和合适的聚合函数可以提高 GROUP BY 的效率。 47. **使用日期**:正确处理日期类型,使用索引和区间查询可以提高查询速度。 48. **使用显式的游标(CURSORs)**:在适当的时候使用...

    Oracle Sql 优化

    虽然`EXISTS`子查询通常比表连接更高效,但在某些场景下,直接使用表连接可以避免额外的子查询,从而提高性能。 ##### 3.18 用EXISTS替换DISTINCT 在某些情况下,使用`EXISTS`代替`DISTINCT`可以简化查询,提高...

    MySQL开发规范和原则大全.doc

    6. ORDER BY、GROUP BY和DISTINCT的字段应在索引末尾。 7. 使用EXPLAIN分析SQL执行计划,避免使用file sort和temporary表。 8. UPDATE和DELETE语句的WHERE子句应有对应的索引。 9. 避免使用%开头的模糊查询,可能...

    SQL Server SQL优化

    在使用`GROUP BY`、`DISTINCT`和`ORDER BY`等操作时,应当尽可能地利用索引来加速执行。 - **推荐做法**:使用`UNION ALL`代替`UNION`以提高合并效率,如`SELECT * FROM A WITH (NOLOCK) WHERE Verify = 3 UNION ...

    MySQL优化.pdf

    通常,SQL执行顺序是:FROM子句(连接表)、WHERE子句(筛选记录)、GROUP BY子句(分组)、HAVING子句(分组后筛选)、SELECT子句(选择字段)、DISTINCT关键字(去重)、ORDER BY子句(排序)和LIMIT子句(限制...

    Oracle提高sql执行效率的心得建议

    14. **适当使用关键字**:HAVING用于GROUP BY后的过滤,而WHERE适用于原始数据过滤,尽量在WHERE中处理条件,减少HAVING的使用。 15. **索引维护**:定期重建索引(ALTER INDEX INDEXNAME REBUILD TABLESPACENAME ...

Global site tag (gtag.js) - Google Analytics