2013-04-02 3 views
0

У меня есть таблица с большим количеством записей адресов. Новые данные добавляются в таблицу, и я хочу найти все новые записи, которые соответствуют существующему имени, почтовому индексу, улице и которые были назначены одному и тому же client_id (1), а также некоторым другим критериям (кодам результатов). Часть, с которой я борюсь, - это получить идентификатор новых записей, которые соответствуют существующим записям.Mysql Group By, Order By, Count, Min Min()

Существующие записи имеют date_exported Int (8) дату в прошлом, новые записи, добавленные имеют date_exported 0.

Использование SQL ниже с MIN вокруг date_exported поля он показывает 0 date_exported записи, но идентификаторы не отсортированы с остальной частью SQL из-за группировки и наличия. Без MIN, это показывает правильный идентификатор и данные, но для старых записей с 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

Это, кажется, хорошо работает - спасибо! –