首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从MySql检索最后一条记录

问从MySql检索最后一条记录
EN

Stack Overflow用户
提问于 2012-02-07 22:58:33
回答 4查看 116关注 0票数 0

我正在尝试从多个表中获取最新条目,我希望将最后一条记录插入到数据库中

这是我的问题

代码语言:javascript
复制
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

我得到了以下结果

​

​

预期结果如下

代码语言:javascript
复制
 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

有谁能帮助我吗?

EN

回答 4

Stack Overflow用户

发布于 2012-02-07 23:03:50

为什么ORDER BY cpd.paymentdate不起作用?另一种方法是在每个表中都有一个补充列,类似于"Created",这将是一个UNIX时间戳。

当然,您必须在每次插入时写入当前时间戳。请在此处阅读:http://www.keithjbrown.co.uk/vworks/mysql/mysql_p9.php

票数 0
EN

Stack Overflow用户

发布于 2012-02-07 23:12:34

修改后的代码:

代码语言:javascript
复制
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表。

票数 0
EN

Stack Overflow用户

发布于 2012-02-07 23:12:36

你有没有考虑过使用左连接来澄清你的代码,也许还有一些缩进/常规格式。

而且你的数据看起来有点奇怪。为什么支付周期编号1= PaymentDate 07-31-2011而支付周期编号4= PaymentDate 04-30-2012?

看起来,支付期间号是纳税月份,因此根据我对你数据的假设,支付期间号4应该=支付日期30-10-2011,并保持连续,而不是从9个月跳到4个月。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9178474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档