ACCESS 数据库,关于 DISTINCT 的一些问题
发布网友
发布时间:2022-04-29 05:55
我来回答
共3个回答
懂视网
时间:2022-04-13 17:18
今天被人问到这样一个问题,整理出来给大家也参考一下 假设有如下这样一张表格: 这里的数据,具有如下的特征: 在一个DepartmentId中,可能会有多个Name,反之也是一样。就是说Name和DepartmentId是多对多的关系 。 现在想实现这样一个查询: 按照Departmen
今天被人问到这样一个问题,整理出来给大家也参考一下
假设有如下这样一张表格:
这里的数据,具有如下的特征:在一个DepartmentId中,可能会有多个Name,反之也是一样。就是说Name和DepartmentId是多对多的关系。
现在想实现这样一个查询:按照DepartmentID排完序之后(第一步),香港空间,再获取Name列的不重复值(第二步),香港服务器租用,而且要保留在第一步后的相对顺序。以本例而言,美国空间,应该返回三个值依次是:ACB
我们首先会想到下面这样一个写法
DepartmentId
热心网友
时间:2022-04-13 14:26
你的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"
如果以上猜测不符合你的想法,请发追问。
热心网友
时间:2022-04-13 15:44
你可以使用group by .... having ...分组就行了