ACCESS中distinct 和 distinctrow 的区别

1,463次阅读
没有评论

共计 960 个字符,预计需要花费 3 分钟才能阅读完成。

“客户”表

公司名称 客户 ID
Ernst Handel ERNSH
Familia Arquibaldo FAMIA
FISSA Fabrica Inter. Salchichas S.A. FISSA
Folies gourmandes FOLIG

 

“订单”表

客户 ID 订单 ID
ERNSH 10698
FAMIA 10512
FAMIA 10725
FOLIG 10763
FOLIG 10408

 

SELECT DISTINCT 客户. 公司名称, 订单. 客户 ID
FROM 客户 INNER JOIN 订单 ON 客户. 客户 ID = 订单. 客户 ID;

结果:
公司名称 客户 ID
Ernst Handel ERNSH
Familia Arquibaldo FAMIA
Folies gourmandes FOLIG

 

SELECT DISTINCTROW 客户. 公司名称, 订单. 客户 ID
FROM 客户 INNER JOIN 订单 ON 客户. 客户 ID = 订单. 客户 ID;

结果:
公司名称 客户 ID
Ernst Handel ERNSH
Familia Arquibaldo FAMIA
Familia Arquibaldo FAMIA
Folies gourmandes FOLIG
Folies gourmandes FOLIG

 

SELECT DISTINCT 客户. 公司名称, 订单. 客户 ID
FROM 客户 INNER JOIN 订单 ON 客户. 客户 ID = 订单. 客户 ID;

使用的是 DISTINCT 谓词,因此,只显示客户. 公司名称, 订单. 客户 ID 2 个字段不同的记录,重复的都不显示。

而在
SELECT DISTINCTROW 客户. 公司名称, 订单. 客户 ID
FROM 客户 INNER JOIN 订单 ON 客户. 客户 ID = 订单. 客户 ID;

使用的是 DISTINCTROW 谓词,是基于整行唯一的,忽略基于整个重复记录的数据,而不仅仅是重复字段,此时客户表和订单表的所有字段都参加比较,有一个字段不同就显示。
而 FAMIA 有 2 个不同的订单号(10512,10725),FOLIG 也有 2 个不同的订单号(10763,10408)。所以虽然订单号不在你的查询字段内,access 也认为这些记录是不同的,它们(FAMIA 和 FOLIG)也都要被显示 2 次。

简而言之,DISTINCT 的作用范围仅是查询中出现的那些字段;而 DISTINCTROW 的作用范围是查询所涉及的所有基础数据来源中的全部字段,无论字段是否在查询中出现。

 

正文完
 0
水东柳
版权声明:本站原创文章,由 水东柳 2018-10-16发表,共计960字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)