我有一个包含两列的表,例如:
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
我认为我接近解决这个问题,但对我来说有点帮助可能很重要。
答案 0 :(得分:1)
这是一条鱼
SELECT x.*
FROM my_table x
JOIN my_table y
ON y.date - INTERVAL 1 WEEK < x.date
AND y.x = 'd';
答案 1 :(得分:-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
尝试以上查询。