数据库oracle中怎么用distinct取消重复行

数据库oracle中怎么用distinct取消重复行,第1张

首先,对你的需求有点模糊,取消c_id的重复行,然后还显示c_id,s_id。上面两个SQL不知道是否满足你的需求,就比如

select distinct c_id,s_id from xskc ,这条语句消除的是c_id和s_id同时一样的记录,所以单就c_id,还是会有重复的情况。

SQL> desc dup

Name Null Type

----------------------------------------- -------- ----------------------------

ID NUMBER

NAME VARCHAR2(10)

SQL> select from dup;

ID NAME

---------- ----------

1 AAA

2 AAA

1 BBB

3 BBB

SQL> select distinct id,name from dup;

ID NAME

---------- ----------

1 AAA

1 BBB

2 AAA

3 BBB

SQL> select distinct id from dup;

ID

----------

1

2

3

所以不管怎么样,如果你要显示c_id和s_id的话,c_id基本都可能重复,除非你还有其他的条件限制

用group by 啊

比如

select 姓名 from 表名 group by 姓名

等同于

select distinct 姓名 from 表名

你的SQL代码中的DISTINCT运算符使用方法不对。

DISTINCT只能对返回结果集的整行取唯一值,而不能对结果集其中的单个字段取唯一值,如果需要对单个字段取唯一值,解决的办法是对只含一个输出字段的SELECT语句使用DISTINCT *** 作符,但是请记住DISTINCT *** 作符不能当做函数使用,就像你提问中的那种写法“DISTINCT(czdl),”否则Jet引擎会报错。

本来想直接替你修改那段SQL代码,但是从你的SQL代码来看,不太容易弄清楚你的实际意图,改写的效果不一定适用,故暂不提供。

如果你能将所要的输出意图讲清楚,我可以为你编写一个正确的SQL代码

以下尝试修正你的SQL代码:

根据你的提问内容做如下猜测

有两张表,

czjl ( *** 作记录表)

字段:czdl( *** 作登录),czrq( *** 作日期),czje( *** 作金额)

vip(vip表)

字段:vid(vip编号),VName(vip名字)

vip表的vid字段与czjl表的czdl字段构成一对多关系

要求输出ID,姓名, *** 作日期,同一个VIP的当天 *** 作金额小计,同一人同一天有多条记录时只显示一次并按 *** 作日期降序排序

sql="select czjlczdl,vipVName,czjlczrq,sum(czjlczje) as czje from vip,czjl where vipvid=czjlczdl group by czdl,VName,czrq order by czrq DESC"

如果不要求输出czje *** 作金额的话,可以使用DISTINCT关键字将SQL代码简化为

sql="SELECT DISTINCT czdl, VName, czrq FROM vip, czjl WHERE vipvid=czjlczdl

ORDER BY czrq DESC"

如果以上猜测不符合你的想法,请发追问。

以上就是关于数据库oracle中怎么用distinct取消重复行全部的内容,包括:数据库oracle中怎么用distinct取消重复行、数据库里的distinct可以用什么替代、ACCESS 数据库,关于 DISTINCT 的一些问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9492758.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存