我正在尝试从多个表中获取最新条目,我希望将最后一条记录插入到数据库中
这是我的问题
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有谁能帮助我吗?
发布于 2012-02-07 23:03:50
为什么ORDER BY cpd.paymentdate不起作用?另一种方法是在每个表中都有一个补充列,类似于"Created",这将是一个UNIX时间戳。
当然,您必须在每次插入时写入当前时间戳。请在此处阅读:http://www.keithjbrown.co.uk/vworks/mysql/mysql_p9.php
发布于 2012-02-07 23:12:34
修改后的代码:
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?
如果添加时间戳列,则在插入或更新行时,它将自动更新为当前日期/时间。您可以按该列进行排序。
编辑:您还可以使用information_schema.tables表,该表有一列存储每个表的更新时间。您可以查询此表,但我认为它只适用于myISAM表。
发布于 2012-02-07 23:12:36
你有没有考虑过使用左连接来澄清你的代码,也许还有一些缩进/常规格式。
而且你的数据看起来有点奇怪。为什么支付周期编号1= PaymentDate 07-31-2011而支付周期编号4= PaymentDate 04-30-2012?
看起来,支付期间号是纳税月份,因此根据我对你数据的假设,支付期间号4应该=支付日期30-10-2011,并保持连续,而不是从9个月跳到4个月。
https://stackoverflow.com/questions/9178474
复制相似问题