2017-08-10 91 views
0

我有两列的表,如:MySQL的,基于日期列选择行

X   Date 
A   2017-08-10 
B   2016-12-19   
C   2017-06-13 
D   2017-07-20 
E   2017-07-14 

我想避免选择数据这是一个多星期比数据早在X行= d。 我尝试了一些疑问:

SELECT * FROM table WHERE Date < (SELECT Date FROM table where X='D') - INTERVAL 1 WEEK 

,但它不是为我工作。 输出应该是这样的:

X   Date 
A   2017-08-10 
D   2017-07-20 
E   2017-07-14 

我亲近的解决这个问题,我的看法,但有一点帮助可以为我显著。

+2

来吧。尝试一点点努力。 – Strawberry

+0

@chirag satapara它被删除我看到 – JeffTheKiller

+0

不要使用'table'作为表名。或者至少使用backtics。您的查询与解决方案非常接近http://sqlfiddle.com/#!9/06971/3 –

回答

-1
SELECT * FROM table WHERE 
Date > (SELECT DATE_SUB(Date, INTERVAL 7 DAY) FROM table where X='D') 

SELECT * FROM table 
WHERE Date > (SELECT DATE_SUB(Date, INTERVAL 1 WEEK) FROM table where X='D') 

您可以点击这里SQL Fiddle Demo

试试上面的查询。

+0

找出答案,然后发布答案。 – Strawberry

+0

仍然有错误: 您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,在第1行的'WEEK'附近使用正确的语法。 – JeffTheKiller

+1

我认为日期应该是上周的“>”而不是“<” – caRameL

1

这里的鱼

SELECT x.* 
    FROM my_table x 
    JOIN my_table y 
    ON y.date - INTERVAL 1 WEEK < x.date 
    AND y.x = 'd'; 
+0

我有错误后,尝试此查询:'on子句'中的未知列'y.date',当然我改变列'名称 – JeffTheKiller

+0

您在转录中犯了一些错误。我看不到你的查询,所以我不能说这是什么错误。 – Strawberry