IF条件以及WHERE NOT EXISTS mysql

时间:2014-05-13 10:14:23

标签: mysql

以下是我的询问:

SELECT *
FROM  A WHERE  NOT EXISTS
  (SELECT *
   FROM   B
   WHERE A.ItemCode = B.ItemCode AND A.Store = B.StoreName GROUP BY B.ItemCode,B.StoreName) AND A.Store='Food Store'

如果B.Date< =' 2014-05-10'我希望添加一个条件。那么只有上述查询才有效 假设: -
A表:10条记录,B表:今天有5条记录,昨天有3条记录。如果选择了昨天的日期,则输出应为表A中的7条记录,如果选择今天的日期,则应找到表A中的2条记录(5 + 3),如果是前一天是然后选择表A中的所有记录。

请帮助我。

2 个答案:

答案 0 :(得分:0)

如果我没有弄错的话,你可以简单地添加它

 SELECT * FROM A WHERE NOT EXISTS (SELECT * FROM B WHERE A.ItemCode = B.ItemCode AND A.Store = B.StoreName GROUP BY B.ItemCode,B.StoreName) AND A.Store='Food Store' AND B.Date < '2014-05-10'

答案 1 :(得分:0)

您需要在已知B的查询部分中添加条件。那是在子查询中:

SELECT *
FROM  A
WHERE NOT EXISTS (SELECT 1
                  FROM B
                  WHERE A.ItemCode = B.ItemCode AND
                        A.Store = B.StoreName AND
                        B.Date <= '2014-05-10'
                 ) AND
      A.Store = 'Food Store';

请注意,子查询中不需要group by。您不关心有多少存在哪些行,只是满足这些条件。我还将*替换为1。对于group by*具有误导性,因为它没有聚合函数。我通常会将1用于exists条款。