从SQL执行的统计信息可以看出,添加DISTINCT后,语句的逻辑读数量反而比不加DISTINCT要低。为什么会产生这种情况,这还要从执行计划说起。 对于不加DISTINCT的情况:由于使用IN子查询,Oracle对第二个连接采用了HASH JOIN SEMI,这种方式相对于普通的HASHJOIN来说代价要大一些。 如果添加了DISTINCT:
在Oracle SQL中,可以使用DISTINCT关键字来去除结果集中重复的行。语法如下: SELECT DISTINCT 列名1, 列名2, ... FROM 表名; 复制代码 例如,假设有一个名为students的表,包含学生的姓名和年龄,如果要查询所有学生的姓名并去重,可以使用以下SQL语句: SELECT DISTINCT name FROM students; 复制代码 这样就可以得到一...
-- 1.使用distinct 进行去重 select distinct s.address from student s /*但是不能显示要去重字段的其他字段*/ -- 2.使用group by进行去重 select min(id), max(name), max(age), address from student group by address; -- 3.使用窗口函数去重 select id, name, age, address from ( select id, n...
在Oracle SQL中,可以使用以下几种方法来去除重复的记录: 使用DISTINCT关键字:在SELECT语句中使用DISTINCT关键字可以去除重复的记录。 SELECT DISTINCT column1, column2 FROM table_name; 复制代码 使用ROW_NUMBER()窗口函数:通过使用ROW_NUMBER()函数来为每一条记录添加一个行号,然后筛选行号为1的记录。 SELECT colum...
在MySQL 中通常是使用 distinct 或 group by子句,但在支持窗口函数的 sql(如Hive SQL、Oracle等等) 中还可以使用 row_number 窗口函数进行去重。 举个栗子,现有这样一张表 task: 备注: task_id: 任务id; order_id: 订单id; start_time: 开始时间 ...
方法一:使用DISTINCT关键字进行去重。 DISTINCT关键字,在使用时,后面会跟上去重的字段。可以保证这些去重字段的数据不重复。 比如,取出student表中,不重复的address有哪些,可以使用如下SQL语句: selectdistinctaddressfromstudent; 返回结果如下: 这种方法,最大的优点是使用起来比较简单。
Oracle的sql基本语法--查询 (1)DISTINCT语法结构 --SELECTDISTINCT列1,列2,列3...from 表名;select distinct stuaddress,grade from jalen.stuinfo;select distinct job from scott.emp; 1. 2. 3. ##(2)where的 =、IN、LIKE、BETWEEN...AND、AND、OR、NOT ...
--含有任何null值的字符串表达式中,null被当作空字符串处理 select empno, ename || 'abc' || mgr from emp; --字符串连接符:||。select语句中用单引号表示字符串 distinct消除重复 --用distinct消除结果集中deptno相同的记录 select distinct deptno from emp; --消除结果集中job和deptno都相同的记录 select ...
在MySQL中通常是使用 distinct 或 group by子句,但在支持窗口函数的 sql(如HiveSQL、Oracle等等) 中还可以使用 row_number 窗口函数进行去重。 举个栗子,现有这样一张表 task: 备注: task_id: 任务id; order_id: 订单id; start_time: 开始时间
项目单价, itemname 项目名称from tbltest;6 查询的时候,还可以做运算,比如,查询的时候,用单价*数量,就可以这么写select itemname as 项目名称, itemnum * itemprice as 项目金额from tbltest;7 查询的时候,还可以去重,这个时候,就需要使用distinct关键字select distinct itemcode, itemnamefrom tbltest;