2015-06-08 53 views
0

我需要一些幫助來解決這個問題。 我有一個看起來像這樣的數據庫:在特定日期後尋找新值

Equipement | Card | SerialNumber | Date  | other | irrelevant | columns 
toto1  | aaaa | a1a1a1  | 06/06/15 | efdfd | dfdfdfdfdf | dfdfdf 
toto2  | bbbb | b2b2b2  | 06/06/15 | fdgdf | yztedg erg | raergr 
toto1  | aaaa | a1a1a1  | 06/07/15 | sdfsd | zrtyeggae | dfdfde 
toto2  | bbbb | b2b2b2  | 06/07/15 | gaery | ghffffffff | qaeryh 
toto3  | cccc | c3c3c3  | 06/07/15 | gezry | eryefefetu | lgfhg 

我正在尋找的是一個特定的日期後,會發現新的價值觀的查詢。例如,我想要所有基於06/06/07的新值。 因此,查詢將僅返回toto3;cccc;c3c3c3;06/07/15,因爲toto1;aaaa;a1a1a1toto2;bbbb;b2b2b2已基於06/06/15。

我已經用一些腳本解決了我的問題(將06/06/15中的所有值保存在散列表中,然後與表中的其餘部分進行比較),但是我幾乎可以確定存在在「簡單」SQL查詢中執行此操作的方法。

如果有人能幫助我,我將不勝感激:)

謝謝!

+0

這就是爲什麼你規範化數據庫。糟糕的db設計每次都會讓你陷入困境。 –

+0

你能否詳細說明一下? – user2407268

+0

它看起來像一個字符串數組 - 你可以考慮使用爆炸和規範化你的數據庫。否則,我們可以使用正則表達式來查找您的需求,但它不會只是一個Sql查詢。 – Falt4rm

回答

2

SerialNumber似乎是一個「主鍵」。我們可以使用NOT IN條款。

SqlFiddle:Demo

SELECT * 
FROM Table1 
WHERE SerialNumber NOT IN (SELECT SerialNumber 
         FROM Table1 
         WHERE Date <= 'The Date requested') 
+0

這!我需要了解這些子查詢,他們真的有效:) 謝謝你的LO t :) – user2407268

+0

說明:我收集了所有在請求日期之前出現的序列號(我們不想要的那些序列號),並從整個表中刪除。它仍然是'請求的日期'之前不存在的具有Seri​​alNumber的行。 – Falt4rm