好的,从标题看似乎无法理解,我会尽量清楚。 基本上,我有一张桌子,我们称之为'记录'。在这个表中我有一些产品,我存储'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
答案 0 :(得分:2)
检查我是否理解你的问题...在你的示例表中你只想得到ID为4的行,对吗?
如果是您想要的,如果您只想要未售出的,请尝试此命令
SELECT
*
FROM
records
WHERE
codex
not in
(
SELECT
codex
FROM
records
WHERE
situation ='OUT'
)