2012-01-17 3 views
4

Можно создать дубликат:
Retrieving the last record in each groupMySql, чтобы получить последние записи повторяющихся записей

Привет всем я имею мои данные таблицы следующим образом

ID FedTaxID RegularPay Payperiodnumber 

1 562545366 500   1 
2 562545366 501   1 
3 562545366 5000   2 

Я хотел бы получить мои данные следующим образом:

ID FedTaxID RegularPay Payperiodnumber 
2  562545366  501   1 
3  562545366  5000   2 

Я пробовал некоторые вещи, как как следует, но я не получаю нужный результат

select max(id) ID,regularpay,fedtaxid,payperiodnumber 
from tblemployeegrosswagesn1 where fedtaxid="562545366" 
group by payperiodnumber 
having count(*) >= 1; 

Может ли один помочь мне

+3

http://stackoverflow.com/questions/1313120/ – newtover

+0

'newtover' perfect thanks :-) – Dotnet

ответ

6

Это должно дать вам желаемый результат:

SELECT  t.ID, 
      t.FedTaxID, 
      t.RegularPay, 
      t.Payperiodnumber 

FROM  tblemployeegrosswagesn1 t 
INNER JOIN (SELECT MAX(ID) AS MaxId, 
        FedTaxID, 
        Payperiodnumber 
      FROM tblemployeegrosswagesn1 
      GROUP BY FedTaxID, Payperiodnumber) AS InnerQuery ON t.ID = InnerQuery.MaxId AND t.Payperiodnumber = InnerQuery.Payperiodnumber AND t.FedTaxID = InnerQuery.FedTaxID 

WHERE  t.FedTaxID = '562545366'; 

Я заинтригован опубликованной ссылкой newtover; В этом случае, однако, вам нужен максимальный идентификатор за каждый payperiodnumber, поэтому вам придется адаптировать это немного больше. Это будет выглядеть примерно так:

SELECT    t.Id, 
        t.FedTaxId, 
        t.RegularPay, 
        t.Payperiodnumber 

FROM    tblemployeegrosswagesn1 t 

LEFT JOIN   tblemployeegrosswagesn1 t1 ON (t.FedTaxId = t1.FedTaxId AND t.Payperiodnumber = t1.PayperiodNumber AND t.id < t1.id) 

WHERE    t1.ID IS NULL 
AND     t.FedTaxId = '562545366' 

Который намного проще читать. Большое спасибо @BillKarwin за аккуратное решение на основе набора. Спасибо за возможность узнать новый (и лучше, если ссылка размещена) способ сделать что-то.

+0

Это тоже работает, но проще [Check] (http://stackoverflow.com/questions/1313120/retrieving -последняя запись в каждой группе) – Dotnet

+0

Отмечено как ответ, как он разрешен – Dotnet

Смежные вопросы