SQL> select num from t1;
NUM
----------
6
6
7
8
9
1
1
1
1
1
1
1
1
1
1
15 rows selected
SQL> select distinct num from t1;
NUM
----------
1
6
8
7
9
5 rows selected
一、用unique代替distinct:
这个比较无耻,基本属于说了跟没说一样,但确实是对的
SQL> select unique num from t1;
NUM
----------
1
6
8
7
9
5 rows selected
二、用group by来做:
这个应该是出题者的本意
SQL> select num from t1 group by num;
NUM
----------
1
6
8
7
9
5 rows selected
三、用union和minus:
因为union和minus默认都是先distinct然后再做聚集,所以可以这样做:
SQL> select num from t1 minus select 999 from dual;
NUM
----------
1
6
7
8
9
5 rows selected
SQL> select num from t1 union select num from t1 ;
NUM
----------
1
6
7
8
9
5 rows selected
一个是minus一个没有的项,一个是union它本身。
关于其他的方法,要是再用over之类的就没有什么太大的意义了,差不多就这3种了。
原文地址:http://www.blogjava.net/decode360/archive/2009/06/22/283563.html
分享到:
相关推荐
此扩展提供了COUNT(DISTINCT ...)的替代方法,该方法对于大量数据通常会以排序和不良性能而告终。 职能 有两个多态聚合函数,用于处理按值传递的固定长度数据类型(即,在64位计算机上最多为8B值): count_...
SELECT DISTINCT p_column FROM your_table ); RETURN v_result; END MY_WM_CONCAT; / ``` 在这个例子中,我们使用了`LISTAGG`函数,它是Oracle 11g引入的一个新功能,可以将分组后的数据连接成一个字符串。`...
- `IFNULL`或`ISNULL`: 检查值是否为空,如果为空则返回替代值。 - `IIF`: 三元条件表达式,类似编程中的三目运算符,根据条件返回两个可能的结果。 5. **聚合函数** - `COUNT`: 计算非空值的数量,常用于计数...
### 示例4:错误的用法与替代方案 ```sql SELECT id, DISTINCT name FROM A; -- 错误的用法 ``` 在 SQL 中,`DISTINCT` 必须放置在 `SELECT` 语句的最前面,不能单独应用于某一个字段。如果想要获取 `name` 的唯一...
在SQL查询中,`INTERSECT` 和 `MINUS` 是两种用于集合...理解这些替代方法不仅有助于在MySQL中编写高效的查询,也有助于对SQL集合操作的深入理解。在实际开发中,应根据数据量、性能需求以及具体场景选择合适的方法。
在其他数据库中,例如Oracle或MySQL,可以使用序列来替代`IDENTITY`函数。 #### 实例分析 根据上述方法,如果需要获取`Prodou_id`和`FinalDye`两个字段的不重复记录,可以编写如下SQL语句: ```sql SELECT MAX(id...
5. **替代方法**: 有时,可以使用 `GROUP BY` 或 `JOIN` 操作来代替 `DISTINCT`,以提高性能。例如,如果你想要得到每个唯一名字的最小id,可以使用 `MIN(id)` 而不是 `DISTINCT`: ``` SELECT MIN(id), name ...
`GROUP BY`可以用来对特定列进行分组并计算每个组的聚合函数,如`COUNT()`或`SUM()`。对于去除重复值,你可以结合`GROUP BY`和`HAVING COUNT(*) = 1`来达到目的,如下: ```sql SELECT name, phone FROM test ...
Stream 的中间方法包括 filter、map、distinct 等,而完结方法包括 collect、reduce 等。 lambda 表达式和 Stream 语法是 Java8 中的两个主要特性,它们可以将业务功能简洁的实现,并提高代码的可读性和性能。
23. **NVL()** / **NVL2()**:如果表达式为NULL,则返回指定的替代值。 24. **COALESCE()**:返回第一个非NULL的参数。 25. **CASE**:用于条件判断和计算。 26. **SYSDATE**:返回当前日期和时间。 27. **ADD_...
LISTAGG 函数是 Oracle 11g 及更高版本中引入的,用于替代 WM_CONCAT 函数。 示例代码: ```sql SELECT sfc_no, LISTAGG(mark_operation_id, ',') WITHIN GROUP (ORDER BY mark_operation_id) FROM bp_marking ...
在给定的示例中,`filterProductByPredicate`方法接受一个`MyPredicate<Product>`参数,这是一个函数式接口,它的`test`方法用于测试产品是否满足条件。在`test4()`测试方法中,我们看到如何使用lambda表达式 `(p) -...
例如,使用 DISTINCT 关键字可以删除重复记录。 用 TRUNCATE 替代 DELETE: 用 TRUNCATE 替代 DELETE 可以提高查询速度和减少磁盘空间占用。TRUNCATE 语句可以快速删除大量数据,而 DELETE 语句需要逐行删除数据,...
DECODE函数在某些情况下可以替代复杂的CASE WHEN结构,提高代码可读性和执行效率。 #### 9. 减少函数调用 函数调用通常比简单的算术或比较操作消耗更多资源。尽可能减少函数调用次数,尤其是在循环和嵌套查询中。 ...
Lambda表达式是Java 8的另一大革新,它允许函数作为方法参数,或者在没有具体方法名的情况下定义匿名函数。Lambda表达式的语法简洁,可以替代传统的匿名内部类。Lambda表达式由三部分组成:参数列表、箭头符号和函数...
19. **EXISTS替代DISTINCT**:在需要检查唯一性的场景中,用EXISTS替代DISTINCT可以提高性能,因为它只需要找到一个匹配项。 以上是Oracle应用开发中的一些关键性能和安全建议,实践中应结合具体业务场景灵活运用,...
问题与思考部分引导学生探索集合查询的替代方法,以及理解`WHERE`子句与`HAVING`子句的区别。`WHERE`子句用于初步筛选满足条件的记录,而`HAVING`子句则在`GROUP BY`后的分组上施加条件,它们分别作用于原始数据和...
以上介绍了三种删除表中重复数据的方法:使用临时表、使用子查询以及使用`ROW_NUMBER()`函数。不同的数据库系统可能支持的功能不同,因此在实际操作时需要根据所使用的数据库类型选择合适的方法。同时,在执行任何...