怎样消除ACCESS数据库中表中重复的行记录

corder_li 2007-06-20 07:11:30
如题,SELECT DISTINCT * FROM 表 好像不行
不知道怎么回事
...全文
959 40 打赏 收藏 转发到动态 举报
写回复
用AI写文章
40 条回复
切换为时间正序
请发表友善的回复…
发表回复
corder_li 2007-06-21
  • 打赏
  • 举报
回复
我在csdn上面加你了,你确认一下,谢谢
那就在这里讨论问题吧
wwwwb 2007-06-21
  • 打赏
  • 举报
回复
SORRY,没有QQ及MSN,就在CSDN上探讨问题吧
corder_li 2007-06-21
  • 打赏
  • 举报
回复
wwwwb():对数据库有研究.学习...
赞...
请问你的msn多少,以后多多请教啊,
Mine:jiangtao.li@hotmail.com
Thanks.
wwwwb 2007-06-21
  • 打赏
  • 举报
回复
另,感觉表结构有点问题,所属类别 型号 封装 厂商字段放在GoodsInfo表中比较好。
wwwwb 2007-06-21
  • 打赏
  • 举报
回复
进行distinct就会有问题是吧?YES
NZ:
Nz 函数


使用 Nz 函数可以返回 0,或一个空字符串(" ") ,或者当一个 Variant 为 Null 时,该函数返回其他的指定值。例如,您可以使用该函数将 Null 值转换为其他值并防止它通过表达式扩散。

语法

Nz(variant[, valueifnull])

Nz 函数具有如下参数:

参数 说明
variant 各种数据类型的 Variant。
Valueifnull 可选参数(除非在查询中使用)。一个 Variant,提供当 variant 参数为 Null 时的返回值。该参数使您能够返回一个值(除了 0 或空字符串以外的其他值)。
注意 如果在查询的表达式中使用了不带 ValueIfNull 参数的 Nz 函数,则对包含 Null 值的字段,其返回结果为空字符串。



当 variant 参数值为 Null 时,Nz 函数返回 0 还是空字符串(当在查询表达式中使用该参数时,通常返回空字符串)取决于上下文中该值是数值还是字符串。如果包含了可选的 valueifnull 参数,则当 variant 参数为 Null 时,Nz 函数将返回由该参数指定的值。当在查询表达式中使用时,NZ 函数通常会包含 valueifnull 参数。

当 variant 参数值不为 Null 时,Nz 函数返回 variant 参数值。

说明

Nz 函数对可能包含 Null 值的表达式是很有用的。要使表达式即使在包含 Null 值时也能计算得到一个非 Null 值,可使用 Nz 函数来返回 0,空字符串,或一个自定义的返回值。

例如,表达式 2 + varX 在 Variant varX 是 Null 时,返回一个 Null 值。然而,2 + Nz(varX) 却返回 2 。

您可以经常使用 Nz 函数作为 IIf 函数的替代函数。例如,在以下的代码中,需要用两个包含 IIf 函数的表达式来返回想要的值。第一个包含 IIf 函数的表达式用于检查变量的值,如果该值为 Null 就将它转换为 0。

varTemp = IIf(IsNull(varFreight), 0, varFreight)
varResult = IIf(varTemp > 50, "High", "Low")
在下一个示例中,Nz 函数提供与第一个表达式相同的函数功能,并且一步即可获得所需的值而不需要分两步进行。

varResult = IIf(Nz(varFreight) > 50, "High", "Low")
如果为可选参数 valueifnul 提供了一个值,则当 variant 为 Null 时,将返回该值。通过这个可选参数,可以避免使用含有 IIf 函数的表达式。例如,下面的下表达式使用 IIf 函数,在 varFreight 的值为 Null 时返回一个字符串。

varResult = IIf(IsNull(varFreight), _
"No Freight Charge", varFreight)
在下一个示例中,当 varFreight 为 Null 时,则 Nz 函数的可选参数提供了返回的字符串。

varResult = Nz(varFreight, "No Freight Charge")
corder_li 2007-06-21
  • 打赏
  • 举报
回复
nz([InputDetail.厂商],'') as 厂商
这是什么意思
nz是什么?
如果有空值的话,进行distinct就会有问题是吧?
wwwwb 2007-06-21
  • 打赏
  • 举报
回复
SELECT a.id, 总数, c.物品名称 AS 名称, a.总数+c.数量-b.数量 AS 在库, c.数量 AS 安全库存, [所属类别], [型号], [封装], [厂商]
FROM (((SELECT id,sum(数量) as 总数 from inputDetail group by id) AS a LEFT JOIN BorrowTable AS b ON a.id=b.借用物品编号) LEFT JOIN GivebackTable AS c ON a.id=c.物品编号) LEFT JOIN
(SELECT [id], nz([InputDetail.所属类别],'') as 所属类别, nz([InputDetail.型号],'') as 型号, nz([InputDetail.封装],'') as 封装, nz([InputDetail.厂商],'') as 厂商
FROM InputDetail
GROUP BY [id], nz([所属类别],''), nz([型号],''), nz([封装],''), nz([厂商],'')
) AS d ON a.id=d.id;
你的InputDetail中所属类别 型号 封装 厂商字段有NULL值
corder_li 2007-06-21
  • 打赏
  • 举报
回复
wwwwb():在么?
怎么不说话
corder_li 2007-06-21
  • 打赏
  • 举报
回复
SELECT DISTINCT (a.ID), InputDetail.名称, a.total, InputDetail.安全库存, InputDetail.优选, InputDetail.归属, InputDetail.试作号, InputDetail.型号, InputDetail.封装, InputDetail.厂商, InputDetail.说明, InputDetail.名称编号, InputDetail.所属类别, InputDetail.类别编号
FROM (SELECT InputDetail.ID,sum(数量) AS total FROM InputDetail GROUP BY InputDetail.ID)a,InputDetail where InputDetail.ID=a.ID


我这样它就是两行相同的记录,你试试看
corder_li 2007-06-21
  • 打赏
  • 举报
回复
ID 如果相同,除了数量不同,其他完全一样
我已经试过distinct了,不行,不知道怎么回事
wwwwb 2007-06-21
  • 打赏
  • 举报
回复
InputDetail表中所属类别 型号 封装 厂商字段,如ID一致,是否相同
ddltxj 2007-06-21
  • 打赏
  • 举报
回复
SELECT DISTINCT(有重复的字段),*
FROM 表

这样可以
corder_li 2007-06-21
  • 打赏
  • 举报
回复
要实现这个功能是不是也要
left join InputDetail i on i.ID = a.ID
全部如下:
select a.ID,a.总数,c.物品名称 as 名称,a.总数+c.数量-b.数量 as 在库
from ((
(SELECT ID,sum(数量) as 总数 from inputDetail group by ID) a
left join BorrowTable b on a.id=b.借用物品编号
)
left join GivebackTable c on a.id=c.物品编号)
left join inputDetail i on a.ID = i.ID

但这样的话又变成两行记录了
corder_li 2007-06-21
  • 打赏
  • 举报
回复
基本的我还是会的,变通是会变通的,这个问题也是我一直头疼的问题
不能从GoodsInfo里取的,因为我是经过一系列计算之后,把计算的 总数 在库数 连同其他的字段值插到GoodsInfo里的,之前就没有的
corder_li 2007-06-21
  • 打赏
  • 举报
回复
这样得到的是 ID 名称 总数 在库 的值
我意思是 所属类别 型号 封装 厂商 之类的字段值也是要从InputDetail里相应的ID里获取啊

wwwwb 2007-06-21
  • 打赏
  • 举报
回复
从GoodsInfo表中取,自己要学会变通处理
corder_li 2007-06-21
  • 打赏
  • 举报
回复
那其他字段的值怎么办?
比如说 所属类别 型号 封装 厂商 之类的
从哪里得到?
wwwwb 2007-06-21
  • 打赏
  • 举报
回复
BorrowTable b
GivebackTable c
corder_li 2007-06-21
  • 打赏
  • 举报
回复
b 和c 是什么?
wwwwb 2007-06-21
  • 打赏
  • 举报
回复
select a.id,总数,c.物品名称 as 名称,a.总数+c.数量-b.数量 as 在库,c.数量 as 安全库存 from ((
SELECT id,sum(数量) as 总数 from inputDetail group by id) a
left join BorrowTable b on a.id=b.借用物品编号)
left join GivebackTable c on a.id=c.物品编号

自己修改一下即可
加载更多回复(20)

7,714

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧