2013-03-04 23 views
1

我有一個兩列表。一列包含VARCHAR類型的網址,另一列包含DATE類型的日期。如何選擇1個月內未訪問的網址?

如何選擇1個月內未訪問過的網址?

例如,如果這是我的數據

url   date 
google.com 2/2/2013 
yahoo.com 2/2/2013 
google.com 3/2/2013 

select語句應該返回yahoo.com因爲該網址沒有在1個月以上訪問

+1

你可以給樣品記錄與理想的結果嗎? – 2013-03-04 06:23:27

+0

你如何從這些表中加入數據? – hjpotter92 2013-03-04 06:24:34

+0

這是一張表 - 是的,我可以舉一個例子 – user784637 2013-03-04 06:26:13

回答

4

嘗試:

SELECT a1.url 
FROM accesses AS a1 
WHERE a1.url NOT IN (
    SELECT a2.url 
    FROM accesses AS a2 
    WHERE a2.access >= DATE_SUB(NOW(), INTERVAL 1 MONTH) 
); 

哪個丹尼貝克特的回答相反。

http://sqlfiddle.com/#!2/db7aa/4

+0

謝謝!只需在嵌套查詢的末尾添加一個「GROUP BY a2.url」,它應該是完美的 – user784637 2013-03-04 06:42:11

+0

這不是相反的,它完全是一個不同的查詢。我以OP值希望返回所有具有大於1個月的'date'的行爲表示值。事實上,他/她想要(並且我不知道你是如何計算出來的,因爲它沒有在問題的任何地方陳述)具有多次顯示的URL,並且其中一個倍數是*新*比1個月,要*不*顯示在結果集中。正如我所說,只有2個完全不同的查詢 - 而不是「反向」。 – 2013-03-04 06:51:31