2016-11-28 60 views
0

我遇到以下问题:我想用值更新Access表。如果多个条件为真,则应该添加该值。根据出现的值更新字段

  • 如果如果如果列C不为空

我尝试了与在列B中的值存在超过一次AND

  • 更A列中的值存在不止一次与
  • 下面的查询几乎可以工作,但似乎忽略了B列的条件。例如,有三条记录。这三个在“a”中具有相同的值,但在“b”中只有两个具有相同的值。尽管如此,查询却为它们三个写了“f”。

    UPDATE table1 SET a = "f" 
    WHERE a IN (SELECT a FROM table1 GROUP BY a, b HAVING COUNT(a) > 1) 
    AND b IN (SELECT b FROM table1 GROUP BY a, b HAVING COUNT(b) > 1) AND [c] <> " "; 
    

    它可以用VBA(循环遍历所有),但我想避免这种情况。我真的很想知道为什么它不起作用。

    非常感谢!

  • 回答

    0

    我认为你的group by条件是错误的。根据您的描述:

    UPDATE table1 
        SET a = "f" 
    WHERE a IN (SELECT a FROM table1 GROUP BY a HAVING COUNT(a) > 1) AND 
         b IN (SELECT b FROM table1 GROUP BY b HAVING COUNT(b) > 1) AND 
         c <> " "; 
    
    +0

    不幸的是,它改变这种简单的忽略了“必须有一个以上的occurence”状态,只是侧重于“不空”的状态。 – BoboAUT

    +0

    第三个条件是'c'上的“非空”条件。 –

    相关问题