2013-04-02 54 views
0

我有一個包含大量地址記錄的表。新數據添加到表中,我想查找與現有名稱,郵編,街道相匹配的所有新記錄以及與某些其他條件(結果代碼)一起分配給同一client_id(1)的新記錄。我掙扎的部分是獲取與現有記錄相匹配的新記錄的ID。Mysql組By,Order By,Count,具有Min()組合

現有的記錄在過去的某個日期的date_exported INT(8),增加了新的記錄已經一個date_exported 0

使用下面分鐘SQL圍繞date_exported領域也呈現出0 date_exported記錄,但由於分組和擁有,ID尚未對SQL的其餘部分進行排序。如果沒有MIN,它顯示了正確的ID和數據,但它是舊記錄與date_exported = 0 - !我想找到新的記錄補充說,有date_exported = 0

SELECT id, name, postcode, street, result_code, MIN(date_exported), COUNT(*) AS cnt 
    FROM fulf.third_party 
where client_id = '1' 
    and (result_code >= '0' 
    and result_code < '1000' and result_code != '400') 
GROUP BY name, postcode, street having cnt > 1 order by id asc 

回答

0

像這樣的東西應該工作:

select t.* 
from (
    SELECT name, postcode, street, MIN(date_exported) as MinDate, COUNT(*) AS cnt 
    FROM fulf.third_party 
    where client_id = '1' 
     and (result_code >= '0' 
     and result_code < '1000' and result_code != '400') 
    GROUP BY name, postcode, street 
    having cnt > 1 
) tm 
inner join fulf.third_party t on tm.name = t.name 
    and tm.postcode = t.postcode 
    and tm.street = t.street 
    and tm.MinDate = t.date_exported 
+0

這似乎工作得很好 - 謝謝! –