2017-08-28 38 views
0

如何檢查表中是否有值出現在我的表中2次或更多次,但它必須在兩個不同的日期。 我不需要知道它發生了多少次,我只需要知道傳遞的鍵是否發生兩次或更多次。MySQL檢查鍵值是否存在n次以上不同日期

由於表中包含許多記錄,我正在尋找一種方式,在最好的情況下,並非所有記錄都必須被掃描。

id | key | request_datetime 
1 | 111 | 05-05-2017 
2 | 222 | 06-05-2017 
3 | 111 | 06-05-2017 
4 | 111 | 06-05-2017 
5 | 222 | 06-05-2017 

如果我檢查了鑰匙111我應該得到一個指標,是真的,如果我檢查222我不應該得到任何後退或false的指標。

到目前爲止,我已經嘗試按鍵和request_datetime然後計數行,性能太糟糕了這種方式。

+0

嘗試通過組的關鍵 –

回答

1

你的問題從字面上翻譯爲一個查詢,該查詢彙總了密鑰並計算了每個密鑰的不同請求日期的數量。在下面的查詢中,我只保留具有相同請求日期的密鑰出現3次或更多次,但您可以將閾值更改爲任何您想要的值。

SELECT 
    `key` 
FROM yourTable 
GROUP BY `key` 
HAVING COUNT(DISTINCT request_datetime) > 2 -- or whatever value you want 

注意,我不得不列名key放入反引號,因爲它是一個MySQL的保留關鍵字。除非絕對必要,否則應避免使用關鍵字命名錶和列。

0

嘗試使用having是這樣的:

SELECT key, COUNT(DISTINCT request_datetime) AS request_count 
FROM myTable 
GROUP BY key 
HAVING request_count > 1; 
相關問題