2017-08-10 97 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