select *
from orders o
WHERE EXISTS
(
select 1
from orders o2
where o2.EmployeeID = o.EmployeeID
AND YEAR(o2.OrderDate) = 1997
and MONTH(o2.OrderDate) = 9
AND DAY(o2.OrderDate) = 5
)
我希望在结果中只收到两条记录,而不是 228 条。如您所见,这是同一张表上的 EXISTS。先感谢您。
有两个带有
orderdate=1997-09-05
. 一张给员工=4,一张给员工=7。现在,对于 employee=4,order 表上有 156 行,对于 employee=7,order 表上有 72 行。总数为 228。您的查询返回所有订单,其中 employeeid 与这两个 ID 匹配。更改您的查询以包括检查
o2.OrderDate=o.OrderDate
根据您的示例,您可以通过将查询简化为以下方式来获得相同的结果:
似乎您正在使用基于此代码的两个表:o2.EmployeeID = o.EmployeeID。
您需要使用 JOIN 才能获得正确的数据。