2017-06-14 71 views
1

我們在構建mysql查詢時遇到了一些問題。根據天數和其他標準提取MySql子查詢

假設我們保存兩列col1和col2。假設col1值爲abcd。所以我們需要找到所有那些col1 = abcd的行,10天后col2的值是product1。

讓我試着用例子來闡述。

enter image description here

讓我試圖打破它分成幾部分

1)所有行,其COL1 = ABCD,並提取有WLID,日期

2)比賽WLID和日期與其它行col2 = product1。日期應該超過10天。所以在這種情況下,只有第4行應該輸出

編輯我們期望的輸出是第4行,因爲通過提取所有WLID其COL1 = ABCD,所以我們得到ROW1和我們的第二個條件,其日期比日期更從中提取在第一種情況下,col2值是product1。這樣提取的輸出是僅第四行

表以文本形式

Sr.No WLID COL1 COL2日期

1 1 ABCD產品1 2017年6月10日4點16分28秒

2 2 ABC產品2 2017年6月12日4時16分28秒

3 1 AB產品1 2017年6月17日4時16分28秒

4 1產品1 2017年6月21日4時16分28秒

5 1產品2 2017年6月21日四時16分28秒

+0

更新你的問題,加上預期的結果,請(並用文字和圖片不只有這麼不是FRE編碼服務) – scaisEdge

+0

喜@scaisEdge我更新問題 – abhaygarg12493

回答

1

您可以使用:

mysql> select * from demo; 

+-------+------+------+-----------+---------------------+ 
| sr_no | wlid | col1 | col2  | date    | 
+-------+------+------+-----------+---------------------+ 
|  1 | 1 | abcd | product 1 | 2017-06-10 04:16:28 | 
|  2 | 2 | abc | product 2 | 2017-06-12 04:16:28 | 
|  3 | 1 | ab | product 1 | 2017-06-17 04:16:28 | 
|  4 | 1 | a | product 1 | 2017-06-21 04:16:28 | 
|  5 | 1 | a | product 2 | 2017-06-21 04:16:28 | 
+-------+------+------+-----------+---------------------+ 
5 rows in set (0.00 sec) 


mysql> select d1.* from demo d1 inner join demo d2 on d1.col2 = d2.col2 where datediff(d1.date,d2.date) >= 10; 
+-------+------+------+-----------+---------------------+ 
| sr_no | wlid | col1 | col2  | date    | 
+-------+------+------+-----------+---------------------+ 
|  4 | 1 | a | product 1 | 2017-06-21 04:16:28 | 
+-------+------+------+-----------+---------------------+ 

enter image description here

+0

謝謝@yusuf,但你忘了添加一個條件,其中d2 col2需要產品1 – abhaygarg12493

+0

是的。這是一個更通用的查詢,它會給你'col1 = col2'的地方。你所說的是'where'條件下的簡單陳述。你想讓我構造這個查詢嗎?另外,隨時接受答案,如果它幫助你:) –

+0

您的查詢是絕對正確的,並感謝您的幫助。我只是在你的查詢中說這個部分丟失了。通過這種方式非常感謝,確切的這個查詢,我們正在尋找 – abhaygarg12493

0

嘗試這一個:

SELECT * FROM表爲t 內部聯接(SELECT * FROM表爲t2其中t2.col1 = 'abcd')on t2.Sr.No = t.Sr.No 其中t2.wlid = t.wlid和t.col2 ='product1'和t.date> DATE_ADD(t2.date,INTERVAL 10 DAY);

雖然我還沒有測試,讓我知道它是否適合你。