`

关于oracle select distinct order by的问题

 
阅读更多

Oracle 9i数据库,执行下面语句出现错误“ORA-01791: 不是 SELECTed 表达式”:

select distinct name from Share_URL_Seeds order by id 

原来:SELECT语句中含有DISTINCT关键字或者有运算符时,排序用字段必须与SELECT语句中的字段相对应。

网上搜到解释如下:

在ORDER BY中指定多个列,结果将先按照子句中的第一列排序,然后第二个,依此类推。

在SELECT中未出现的列名也可用于ORDER BY 子句中,只要TABLE中有就行。

但如果SELECT子句中出现了DISTINCT关键字,则只能用出现过的列名,

而且如果SELECT子句中使用了任何运算符,在ORDER BY 子句中必须保持和SELECT子句中表达式完全一致,否则出现错误:“ORA-01791: 不是 SELECTed 表达式”。

 

 

如果想按照id排序,而又使name不重复,可用以下sql语句:

SELECT distinct name, min(id) as b FROM Share_URL_Seeds where Type=1 group by name order by b;

分享到:
评论

相关推荐

    Oracle各种select查询语法

    select * from emp order by hiredate desc; 该查询语句将查询emp表中所有记录,并按hiredate字段降序排序。 7、去重复记录 select distinct deptno,job from emp; 该查询语句将查询emp表中deptno和job字段的...

    oracle中distinct的用法详解

    ROW_NUMBER() OVER (PARTITION BY name, code ORDER BY id DESC) AS rn FROM table ) SELECT name, code, id FROM ranked_data WHERE rn = 1; ``` 总的来说,`DISTINCT`在Oracle SQL中是一个强大的工具,用于消除...

    Oracle中的select大全

    ### Oracle中的SELECT语句大全 在Oracle数据库管理中,`SELECT`语句是最常用也是最核心的操作之一。本文将深入探讨Oracle中`SELECT`语句的各种用法,并结合实际示例进行讲解,帮助读者全面掌握这一重要技能。 ####...

    Oracle学习笔记1.docx

    本文档涵盖了 Oracle 学习的基础知识,包括客户端工具、用户管理、表结构、SELECT 语句、DISTINCT 操作、WHERE 子句、ORDER BY 子句和 SQL 函数等内容。 客户端工具 Oracle 提供了多种客户端工具,如 Sql Plus、...

    oracle笔记

    以上是Oracle笔记中关于客户端工具、用户管理、表结构、SELECT语句、DISTINCT、WHERE子句、ORDER BY子句以及SQL函数的基础知识。这些知识点构成了Oracle数据库操作的基础,对于数据库管理员和开发者来说至关重要。

    Oracle和SqlServer语法区别

    可以看到,Oracle的SELECT语句支持更多的子句,例如START WITH U CONNECT BY、INTERSECT和MINUS等。这些子句在SqlServer中不支持,但是可以使用其他方式实现相同的结果。 二、函数和过程 Oracle和SqlServer都支持...

    Oracle公司内部数据库培训资料-SQL SELECT

    这些是Oracle数据库培训资料中关于SQL SELECT语句的基础内容,掌握了这些,可以进行基本的数据库查询操作。随着学习的深入,还将涉及更复杂的查询技术,如WHERE子句过滤数据,ORDER BY对结果排序,GROUP BY进行分组...

    oracle树查询

    ### Oracle树查询详解 ...以上是关于Oracle树查询的一些基本用法和进阶技巧。这些查询方法可以帮助我们在处理具有层次结构的数据时更加灵活高效。希望本文能够帮助大家更好地理解和掌握Oracle中的树查询技术。

    Oracle选择语句.txt

    select distinct(floorcount), count(*) from sde.Dlg_1k2011_Jm_Poly group by floorcount order by floorcount ``` #### 解析: 1. **语法结构**: - `select distinct(floorcount), count(*)`:选择`...

    oracle 讲义

    - `select distinct`用于去除结果集中重复的行,如`select distinct deptno from emp`。 6. **WHERE子句**: - `where`用于过滤满足特定条件的记录,如`where deptno = 10`。 - `<>`表示不等于,`between`用于...

    Oracle性能问题总结

    * 避免使用耗费资源的操作:带有 DISTINCT,UNION,MINUS,INTERSECT,ORDERBY 的 SQL 语句会启动 SQL 引擎,执行耗费资源的排序(SORT)功能 表设计和其他 * 建立数据库表时要尽量避免不必要的冗余项,但是为了提高...

    最全的ORACLE-SQL笔记

    22. **排序数据**:`select * from dept order by deptno desc;`使用ORDER BY对结果集进行升序或降序排序。 这些是Oracle SQL基础操作的一部分,实际应用中还有更复杂的查询技巧,如子查询、联接、聚合函数等。学习...

    Oracle练习笔试大全

    59、select avg(sal) from emp where sal >1200 group by deptno having avg(sal) >1500 order by avg(sal) desc;//求出sal>1200的平均值按照deptno分组,平均值要>1500最后按照sal的倒序排列 60、select ename,sal...

    oracle实现行转列功能,并使用逗号进行隔开拼接,成为一条数据.pdf

    WITHIN GROUP (ORDER BY mark_operation_id) FROM bp_marking WHERE create_date > sysdate - 1/24 GROUP BY sfc_no; ``` 这个示例代码将 bp_marking 表中的 sfc_no 字段与对应的所有 mark_operation_id 字段合并...

    Oracle入门语句

    例如,`SELECT * FROM table_name ORDER BY column1 ASC;`。 4. **GROUP BY子句**:当需要根据一个或多个列对数据进行分组时,使用GROUP BY。常与聚合函数(如COUNT, SUM, AVG, MAX, MIN)一起使用,例如,`SELECT ...

    关于Oracle数据库中索引的维护

    order by segment_name / ``` 索引的选择性是衡量索引效率的重要指标,它表示索引列中不同值的数量与表中记录总数的比例。选择性越高,索引效率越佳。如果使用基于成本的优化器,低选择性的索引可能不会被选用;而...

    oracle字段去重

    SELECT A.*, ROW_NUMBER() OVER (PARTITION BY A.TERM_ID ORDER BY A.USER_DEPTNO) AS RK FROM COMPUTER A ) T2 WHERE T2.RK = 1 AND T2.DEPT_LEVEL = 4 GROUP BY T2.USER_DEPTNO, T2.DEPTFOURNAME; ``` **解析:...

    Oracle的练习语句

    这些练习题涵盖了Oracle SQL的基础查询操作,如SELECT语句的使用、WHERE子句、函数应用(如NVL、INITCAP、SUBSTR、REPLACE、EXTRACT、MONTHS_BETWEEN等)、比较运算符、ORDER BY排序、聚合函数(如DISTINCT)等。...

    Oracle语句规划详解

    - 低效:`SELECT DISTINCT CUST_ID FROM CUSTOMER WHERE CUST_ID IN (SELECT CUST_ID FROM ORDER)` - 高效:`SELECT CUST_ID FROM CUSTOMER WHERE EXISTS (SELECT 1 FROM ORDER WHERE ORDER.CUST_ID = CUSTOMER....

    ORACLE和SQL Server的语法区别

    ORDER BY order_expression ``` - **转换策略:** - 移除Oracle特有的基于成本的优化提示。 - 使用SQL Server的优化器。 - 使用递归CTEs替代`START WITH ... CONNECT BY` 子句。 - 使用`EXISTS` 或 `NOT ...

Global site tag (gtag.js) - Google Analytics