如果Access中的记录不是重复值,如何选择该记录

时间:2015-02-20 13:39:58

标签: database ms-access

好的,从标题看似乎无法理解,我会尽量清楚。 基本上,我有一张桌子,我们称之为'记录'。在这个表中我有一些产品,我存储'id','codex'(这是整个数据库中某个产品的唯一标识符),'price'和'situation'。最后一个字符串告诉我产品刚刚进入商店(在这种情况下它被设置为'IN'),或者它已经被售出(在这种情况下为'OUT')。 数据库不是由我们创建的,我必须使用它,尽管它的结构非常糟糕......最初投影数据库的人决定在产品的情况从“IN”传递到“OUT”时按以下方式注册:而不是更新表中的相应值,他过去采用“IN”作为情况的数据行,并将其设置为DUPLICATE,那时,“OUT”作为情况。 总结一下:如果产品还没有销售,它将有一行专用数据;否则那些行将是两个,除了'情境'字段之外相同。 我需要做的是:选择一个产品,如果(并且只有)没有重复的产品。基本上,我可以(并且应该)寻找'codex',如果我的Count(codex)最终为> 1,我就不会选择该行。 我希望这个过程的解释足够清楚...... 我尝试了很多替代方案(不,SELECT DISTINCT不是解决方案):des任何人都知道如何做到这一点?因为真的,我们三个人都没有想出一个好的解决方案! 这是表的架构,我希望它足够清晰,如果不是,请不要犹豫,询问更多细节。 提醒一下:该项目在(叹气......)VB.net中,数据库在Microsoft Access(mdb)中。 我在StackOverFlow上找不到解决方案,我希望这不是一个重复的问题!在此先感谢您的帮助。

id     codex    price    situation
 1         1     2.50           IN
 2         1     2.50          OUT
 3         2     3.45           IN
 4         3    21.50           IN
 5         2     3.45          OUT
 6         4     1.50           IN

1 个答案:

答案 0 :(得分:2)

检查我是否理解你的问题...在你的示例表中你只想得到ID为4的行,对吗?

如果是您想要的,如果您只想要未售出的,请尝试此命令

SELECT 
   *
FROM 
   records
WHERE 
   codex 
   not in 
   (
      SELECT
         codex 
      FROM 
         records 
      WHERE 
         situation ='OUT'
   )