oracle复杂查询

本文深入探讨了SQL中的高级查询技巧,包括复杂SELECT语句的应用、UNION与UNION ALL的区别、MINUS及INTERSECT的使用场景、子查询、表连接、CASE语句以及DECODE函数的强大功能,并通过具体实例进行了说明。
摘要由CSDN通过智能技术生成

复杂select语句

操作集合

Union和Union All

查询一:

select message_title, message_content, send_begin_time

  from ap_message am, ap_message_receive mr

 where am.message_id = mr.message_id

union

select message_title, message_content, send_begin_time

  from ap_message am, ap_message_receive mr

 where am.message_id = mr.message_id

   and am.message_title = '通知'

 orderby send_begin_time

 

查询二:

select message_title, message_content, send_begin_time

  from ap_message am, ap_message_receive mr

 where am.message_id = mr.message_id

unionall

select message_title, message_content, send_begin_time

  from ap_message am, ap_message_receive mr

 where am.message_id = mr.message_id

   and am.message_title = '通知'

 orderby send_begin_time

 

Minux:两个集合之间不同的部分

select USER_CODE, USER_NAME

  from AP_USER

 where department_id = 'ef5ebee66188a451e040007f0100797c'

minus

select USER_CODE, USER_NAME

  from AP_USER

 where department_id = 'ff8080814482bb2a014486cf39d7069b'

Intersect:取2个集合之间相同的部分

select USER_CODE, USER_NAME

  from AP_USER

 where department_id = 'ef5ebee66188a451e040007f0100797c'

intersect

select USER_CODE, USER_NAME

  from AP_USER

 where department_id = 'ff8080814482bb2a014486cf39d7069b'

子查询

在一个select语句中嵌入一个完整的select语句

select USER_NAME, USER_CODE

  from AP_USER

 WHERE USER_ID =

       (select USER_ID FROM AP_USER WHERE USER_CODE = 'B11302246')

表连接

select au.user_name, pu.user_code

  from a1_user au, ap_user pu

 where au.user_code=pu.user_code

case语句

查询一:case简单使用

select am.message_title,

       am.create_date,

       case am.message_status

         when '0' then '未发送'

         when '1' then '已发送'

         when '2' then '发送失败'

         else '状态不明'

       end

  from ap_message am

 

查询二:使用表达式

select au.user_name,

       au.user_code,

       case

         when au.dshk_money='2000'then

          '穷人'

         when au.dshk_money='3000'then

          '普通人'

         else

          '不是人'

       end

  from a1_user au

强大的DECODE函数

查询一:

select decode(1, 1, 2, 3) 比较1, decode(1, 2, 3, 4) 比较2

  from deliver_position  101

 

查询二:分类

select am.message_title,

       am.create_date,

       decode(am.message_type, '1', '工单消息', '其他消息')

  from ap_message am

 

查询三:多参数匹配

select am.message_title,

       am.create_date,

       decode(am.message_type, '1', '工单消息','2','认证消息','3','好友消息', '其他消息')

  from ap_message am

group by数据分组

查询一:

select count(message_title), count(message_content), message_status

  from ap_message

 group by message_status

 

查询二:

select count(message_title) countmt, count(message_content) countmc, message_status

  from ap_message

 group by message_status

 orderby countmt desc

 

having限制分组

查询一:having筛选查询结果

select count(message_title) countmt,

       count(message_content) countmc,

       message_status

  from ap_message

 group by message_status

having count(message_title)=10


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值