说我有一张桌子
CustID | OrderDate
1 | 2017-05-30 05:15:18
2 | 2017-04-18 05:15:18
2 | 2017-04-15 05:15:18
3 | 2017-02-17 05:15:18
4 | 2017-05-29 05:15:18
4 | 2017-03-24 05:15:18
任何我只想退回不包含30天以上订单日期的CustID(今天是2017-05-30)。所以上面的例子只返回2和3。
我有:
SELECT DISTINCT CustID
FROM TABLE
WHERE NOT EXISTS (SELECT CustID FROM TABLE WHERE OrderDate > DATE_ADD(NOW(),INTERVAL-30DAY));
但我只会遇到语法错误。
再次感谢,我对SQL很新。
答案 0 :(得分:1)
你可以试试这个:
select distinct CustIDs from YourTableName where OrderDate < now() - interval 30 day;
PS:在您的查询中,您使用的是FROM TABLE
- 这是不对的,您必须使用FROM {YourTableName}
,其中{YourTableName}
是数据库中您的表的真实姓名,如(客户,客户等)
答案 1 :(得分:0)
因为您错过了where子句中的重要组件:and t1.id = t2.id
select distinct CustID from table t1 where not exists (select 1 from table t2 where [whatever_your_conditions_are] and t1.id = t2.id);
一个类似于你的表...它只有日期而不是时间戳(以及where子句中的宽松日期条件,仅为了简单起见):
选择日期&gt;的用户current_date(在你的情况下是order_date):
答案 2 :(得分:0)
据我了解你的问题。
您的查询将是:
SELECT DISTINCT CustID FROM TABLE WHERE OrderDate < GETDATE()-30
如果您需要<
条款中的>
或OrderDate
Where
等更改,请与我们联系。