ACCESS 数据库,关于 DISTINCT 的一些问题

2024-11-22 14:58:57
推荐回答(2个)
回答1:

你的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 czjl.czdl,vip.VName,czjl.czrq,sum(czjl.czje) as czje from vip,czjl where vip.vid=czjl.czdl group by czdl,VName,czrq order by czrq DESC"

如果不要求输出czje操作金额的话,可以使用DISTINCT关键字将SQL代码简化为
sql="SELECT DISTINCT czdl, VName, czrq FROM vip, czjl WHERE vip.vid=czjl.czdl
ORDER BY czrq DESC"

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

回答2:

你可以使用group by .... having ...分组就行了