oracle报错ORA-00909:参数个数无效

本文介绍了在SQL中处理多列去重计数的问题,特别是当从Oracle转换到MySQL时遇到的挑战。作者分享了一种在Oracle中通过字符串连接两列实现去重的方法,如使用`TRUNC`函数结合`||`进行拼接,而在MySQL中则可以直接使用`COUNT(DISTINCT ...)`。此外,文章提醒读者在不同数据库系统中要注意语法差异,并提供了适用的解决方案。
摘要由CSDN通过智能技术生成

问题描述:

  1. 有一些数据是每天去重,然后进行求和,但是当你直接取很多天的时候如何去解决,每天去重这个问题呢,很明显,你不能直接对一个字段去重。假如第二天有和前一天一样的数据,那不就只有一条了,实际上,你应该取2条的

在编写sql的过程中,我想对一个两列同时去重,求数量于是用了

count distinct(时间,xxx2)

原因分析:

  • 后面发现在oracle 其实并不支持这么操作
  • 但在mysql里面,你是可以的,所以我在操作的时候直接套过来用,发现并不行。

解决方案:

后面细想了一下,我反正都要求总量,又不要数据,我把两列拼起来,这样,再取值不久好了,于是就变成了怎么连接这两列,这样去重取值就保证了
2种方法

  • ||
    oracle 操作
select trunc(sysdate,'dd')||'hello' from dual

结果
在这里插入图片描述
如果要进行count distinct

select count (distinct (trunc(sysdate,'dd')||'hello')) from dual

就要这样写了

  • concat
    concat就很简单了
select count (distinct concat(trunc(sysdate,'dd'),'hello')) from dual

其实这个地方,因为拼的是时间,可以这样操作,假如并不是按时间来,那么直接distinct就行了,也不用这么麻烦,都得看自己的实际情况了。

注意:这里说一下,mysql中,并没有符号“||”拼接这种说法,在mysql中“||”代表的是逻辑或,和OR是一个意思。
在这里插入图片描述
收工,干饭!!!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值