`
wangyanlong0107
  • 浏览: 502693 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

在union all中使用order by 报错的解决方案

 
阅读更多

//解法一:   
select * from (     
       select col_1,col_2,col_3,status     
       from t     
       where status >= 0     
       order by status)     
union all     
select * from (     
       select col_1,col_2,col_3,status     
       from t     
       where status < 0     
       order by status)     
/     
COL_1  COL_2   COL_3      STATUS     
------ ------- ------ ----------     
花生   瓜子    绿豆            0     
芍药   牡丹    月季            1     
优乐美 香飘飘  炸鸡            2     
牙膏   牙刷    杯子            3     
china  america canada         -1    
//解法二:   
select * from t    
order by    
      decode(status,   
             -1,1,   
             3,2,   
             2,3,   
             1,4,   
             0,5) desc   
/   
//这可是一个很妙的排序,本人首次看到在order by语句中可以使用decode()函数来排序   
//同理,我们也可以使用case语句来排序:   
//解法三:   
select * from t    
order by    
      case status   
      when -1 then 5   
      when 3 then 4    
      when 2 then 3    
      when 1 then 2    
      else 1   
      end    
/   
//union 和union all中都支持order by和group by排序和分组子句

分享到:
评论

相关推荐

    union all与order by用法

    但是,需要注意的是,ORDER BY 子句只能在 UNION ALL 的最后一个子查询中使用,否则将会报错。 例如: ```sql SELECT col_1, col_2, col_3, status FROM t WHERE status &gt;= 0 ORDER BY status UNION ALL SELECT col...

    Mysql联合查询UNION和Order by同时使用报错问题的解决办法

    因此,常常出现这样的错误 代码如下:select * from [IND] where INDID&gt;10unionselect * from [IND] where INDID&lt;9&gt;10 order by INDID descunionselect * from [IND] where INDID&lt;9 order by INDID desc此时就出现...

    MySQL中union和order by同时使用的实现方法

    MySQL中union和order by是可以一起使用的,但是在使用中需要注意一些小问题,下面通过例子来说明。首先看下面的t1表。 1、如果直接用如下sql语句是会报错:Incorrect usage of UNION and ORDER BY。 SELECT * FROM ...

    SQL语句 UNION 和 UNION ALL 使用

    - `GROUP BY` 和 `HAVING` 子句只能在单个 `SELECT` 语句内部使用,不能影响到整个 `UNION` 或 `UNION ALL` 的结果集。 ##### 5. 其他 Transact-SQL 语句 - `INTO` 语句只能用于最后一个 `SELECT` 语句的结果集中。...

    MySQL中使用or、in与union all在查询命令下的效率对比

    在MySQL数据库中,进行数据查询时,我们经常需要使用到`OR`、`IN`和`UNION ALL`这些操作符。这些操作符在不同的场景下有不同的效率表现,但并不是像网络上普遍认为的那样,`UNION ALL`总是比`OR`和`IN`更快。实际上...

    MySQL中Union子句不支持order by的解决方法

    当尝试在`UNION`中使用`ORDER BY`时,会出现错误提示“Incorrect usage of UNION and ORDER BY”,这意味着我们不能直接将`ORDER BY`放在每个`SELECT`后面。为了实现排序,我们可以将每个`SELECT`语句包裹在一个子...

    Sql中的UNION ALL

    在SQL查询语言中,`UNION ALL`是一个非常有用的运算符,它用于合并两个或多个`SELECT`语句的结果集。与`UNION`不同的是,`UNION ALL`会保留所有的行,包括重复行。 #### UNION ALL 的使用方法 `UNION ALL`的基本...

    sql利用union all行转列

    1. **UNION ALL**:在SQL中,`UNION`用于合并两个或多个`SELECT`语句的结果集,但会自动去重;而`UNION ALL`则保留所有记录,包括重复项。这对于构造复杂查询非常有用。 2. **行转列(Pivot)**:通常情况下,原始...

    union和union All的区别.md

    如果想要在 UNION 中使用 ORDER BY 对结果集进行排序,需要将 ORDER BY 子句放在最后一个查询语句的后面。这是因为 ORDER BY 对整个结果集进行排序,而最后一个查询的结果集是最终结果集的一部分,只有在最后一个...

    MySQL如何使用union all获得并集排序

    在MySQL中,`UNION ALL` 用于合并多个`...同时,理解如何在`UNION ALL`操作中嵌套`ORDER BY`子句,对于编写复杂查询至关重要。这种技术在处理多条件排序和复杂数据组合时非常实用,能够灵活地适应不断变化的业务需求。

    使用UNION ALL代替IF语句的合并处理案例

    当然,这并不意味着在所有情况下都应避免使用`UNION ALL`,在某些复杂查询或数据聚合场景中,`UNION ALL`仍有其独特的优势。在实际应用中,应结合具体需求和系统性能,灵活选择适合的处理方式。

    数据库中union和union all的区别

    在实际应用中,选择使用 UNION 还是 UNION ALL 应该根据具体需求来决定。如果你的查询需要排除重复的数据,例如在聚合统计或者汇总报告中,那么 UNION 是合适的。而如果你正在合并来自多个表的数据,并且不关心是否...

    hive on tez 常见报错问题收集

    这里我们将深入探讨五个在Hive on Tez中常见的报错问题及其解决方案。 1. 错误一:Failing because I am unlikely to write too。 这个问题是由于Hive中的一个已知bug,具体问题可以在Apache JIRA的HIVE-16398中...

    UNION ALL 的使用方法

    SELECT ... UNION ALL SELECT C.TRD_NO FROM XXXXXXXXX C WHERE C.CLIENT_CD = W_IN_CLIENT_CD ) D WHERE A.TRD_NO = D.TRD_NO AND A.CLIENT_CD = W_IN_CLIENT_CD AND A.RESULT IS NULL ;

    Mssql Union 与 Union All区别,用union还是union all主要看业务需求.docx

    在SQL查询中,`UNION` 和 `UNION ALL` 是两种用于合并多个SELECT语句结果集的方法,它们之间的主要区别在于数据去重处理和性能优化。了解这些概念对于优化SQL查询性能和满足特定的业务需求至关重要。 1. **UNION**...

    oracle集合union、union all、intersect、minus

    在上面的示例中,我们使用 union all 操作将两个查询结果合并成一个结果集。结果集中有重复行,因为 union all 操作不去除重复行。 intersect 操作 Intersect 操作是将两个或多个查询结果进行交叉运算,返回共有的...

Global site tag (gtag.js) - Google Analytics