我想要的是相当简单,但我想知道什么是编写查询的最佳方式。
我有一份商家列表,例如,我有一份购买记录。
我需要根据购买情况显示退货商品。
这是向我展示过去30天内购买的所有商家,这些商家也是在30天前购买的。
答案 0 :(得分:1)
这是你可以采取的两种方法 -
intersect
select business_id
from purchases
where purchase_date >= dateadd(day, -30, getdate())
intersect
select business_id
from purchases
where purchase_date < dateadd(day, -30, getdate())
或exists
子查询
select distinct business_id
from purchases x
where purchase_date >= dateadd(day, -30, getdate())
and exists (select 1
from purchases y
where y.purchase_date < dateadd(day, -30, getdate())
and y.business_id = x.business_id)
答案 1 :(得分:1)
使用SELF JOIN
:
表记录
business_id
purchase_date
...
SELECT COUNT (DISTINCT l1.business_id)
FROM Log l1
JOIN Log l2 ON l1.business_id = l2.business_id
AND l1.purchase_date < DATEADD(day, -30, GETDATE())
AND l2.purchase_date >= DATEADD(day, -30, GETDATE())