我正在尝试从多个表中获取最新条目,我希望将最后一条记录插入到数据库中
这是我的查询
select distinct concat(e.firstname,' ',e.middleinitial,' ',e.lastname)
as empname, e.empid,egw.payperiodnumber,egw.payrollyear,date_format(cpd.paymentdate,'%m-%d-%Y')
as PaymentDate
from tblemployee e,tblemployeegrosswagesn egw,tblcustomerpaymentdates cpd
where e.empid=egw.empid and e.fedtaxid=egw.fedtaxid and egw.fedtaxid=cpd.fedtaxid
and e.PayFrequencyTypeID=cpd.payfrequencytype and
cpd.payfrequencytype='MN' and
cpd.payperiodnumber=egw.payperiodnumber and e.fedtaxid='546548321'
and (egw.empid,egw.payperiodnumber,egw.payrollyear) in (select empid,
payperiodid,payyear from tblcurpayresults where fedtaxid='546548321' order by empid) order by
empid,payperiodnumber asc
我得到以下结果
预期结果如下
Empname EmpID Payperiodno Payrollyear PaymentDate
Dorababu ldkfjg dlsfkgjwl 1430 1 2011 01-31-2012
Dorababu ldkfjg dlsfkgjwl 1430 2 2011 02-29-2012
Dorababu ldkfjg dlsfkgjwl 1430 3 2011 03-31-2012
Dorababu ldkfjg dlsfkgjwl 1430 4 2011 04-30-2012
Dorababu ldkfjg dlsfkgjwl 1430 5 2011 05-31-2012
Dorababu ldkfjg dlsfkgjwl 1430 6 2011 06-30-2012
任何人都可以帮助我
答案 0 :(得分:0)
为什么ORDER BY cpd.paymentdate不起作用? 另一种方法是在每个表中都有一个补充列,例如“Created”,这是一个UNIX时间戳。
当然,您必须在每次插入时写入当前时间戳。请在此处阅读:http://www.keithjbrown.co.uk/vworks/mysql/mysql_p9.php
答案 1 :(得分:0)
代码重做:
SELECT DISTINCT
CONCAT(e.firstname, ' ', e.middleinitial, ' ', e.lastname) AS empname,
e.empid,
egw.payperiodnumber,
egw.payrollyear,
DATE_FORMAT(cpd.paymentdate, '%m-%d-%Y') as PaymentDate
FROM
tblemployee e,
tblemployeegrosswagesn egw,
tblcustomerpaymentdates cpd
WHERE
e.empid=egw.empid
AND e.fedtaxid=egw.fedtaxid
AND egw.fedtaxid=cpd.fedtaxid
AND e.PayFrequencyTypeID=cpd.payfrequencytype
AND cpd.payfrequencytype='MN'
AND cpd.payperiodnumber=egw.payperiodnumber
AND e.fedtaxid='546548321'
AND (egw.empid,egw.payperiodnumber,egw.payrollyear) IN
(
SELECT
empid,
payperiodid,
payyear
FROM
tblcurpayresults
WHERE
fedtaxid='546548321'
ORDER BY
empid
)
ORDER BY
empid, payperiodnumber ASC;
是否需要第一个ORDER BY
?
如果添加TIMESTAMP列,则会在插入或更新行时使用当前日期/时间自动更新。你可以通过该列订购。
编辑:您也可以拥有information_schema.tables表,其中包含一个存储每个表更新时间的列。您可以查询此表,但我认为它仅适用于myISAM表。
答案 2 :(得分:0)
您是否考虑使用左连接来澄清您的代码,也许还有一些缩进/一般格式。
此外,您的数据看起来有点奇怪。为什么Payperiodno 1 = PaymentDate 07-31-2011但Payperiodno 4 = PaymentDate 04-30-2012?
根据事情看来,payperiodno是纳税月份,因此根据我对您的数据的假设,payperiodno 4应该=支付日期30-10-2011并保持连续,而不是从第9个月跳到第4个月。
答案 3 :(得分:0)
如果您不希望有时间戳,可以使用带有auto_increment的identity columt(代理键),然后在max SK _ ###上进行搜索,但没有任何明显的符号表示插入顺序/时间,您将会挣扎。
Marcus Culver