MYSQL:选择不包含特定日期的项目

时间:2017-05-31 04:45:24

标签: mysql

说我有一张桌子

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很新。

3 个答案:

答案 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子句中的宽松日期条件,仅为了简单起见):

enter image description here

选择日期&gt;的用户current_date(在你的情况下是order_date):

enter image description here

答案 2 :(得分:0)

据我了解你的问题。

您的查询将是:

SELECT DISTINCT CustID FROM TABLE WHERE OrderDate < GETDATE()-30

如果您需要<条款中的>OrderDate Where等更改,请与我们联系。