以下是我的询问:
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中的所有记录。
请帮助我。
答案 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
条款。