2011-08-17 62 views
0

对不起,如果这已经得到解答。我环顾四周,但还没有找到真正有效的东西。Microsoft Access - SQL表中不同的引用

基本上,我想从接入

所以我写了下面的代码获得基于不同在一个表中的列中的所有数据:

Set rs = CurrentDb.OpenRecordset("select * from table t where t.refnum IN (select distinct refnum from table)") 

这是有道理的,但SQL我无法在Access中获得所需的结果。

+0

我在访问SQL语句没有问题。 – Patrick

回答

2

你内部查询是不同的。但是,然后你的外部查询不区分它:-)。

*意味着你要在表中的每个领域。如果您在该级别有重复记录,则表中没有唯一的记录ID,该可能是是一个糟糕的设计。

反正 - 一个明显的回报是这样的:

Set rs = CurrentDb.OpenRecordset("SELECT min(refnum), [field1], [field2] FROM table GROUP BY [field1], [Field2]) 

就像你拥有了它你不需要内部/外部查询 - 只是这一点。

而且 - 只是标准的建议 - 你可以做的更好,以列表中的字段,而不是使用*。

编辑
我添加了分组到上面的SQL。此外,您现在需要列出字段 - 不能使用*。此外,请记住,您汇总的字段(例如,当您使用min()时,将不会在您的GROUP BY中列出)。

+0

我得到疗法错误“无法组与‘*’选定字段。 我将列出字段,但有超过100 – jamesC

+0

另外,不知道它的问题,但它是在第5列名单 – jamesC

+0

对不起 - 我忘了GROUP BY - 将ammend我的回答 – Chains

0

集RS = CurrentDb.OpenRecordset( “选择表t其中t.refnum IN(选择由引用句柄从表组引用句柄)*”)

+0

我尝试过这种方法,并不是需要什么。往上看。 感谢您的帮助 – jamesC