【问题标题】:how to select the last row insert by a specific iduser如何选择特定 iduser 插入的最后一行
【发布时间】:2014-07-02 17:03:51
【问题描述】:

您好,我想获取输入特定数据的特定用户 ID。当 X 用户输入数据并保存时,h 将是最后一行。但是我如何取最后一行的例子,我的用户 id = 16。Mnay 用户可以在他之后插入数据,但我只想要我的用户 id 16 的最后一行。

SELECT * 
from
    projetstaches
        inner join
    timesheets
        on (timesheets.timId = projetstaches.prtTimeSheetId)
        inner join
    users
        on (users.usrId = timesheets.timUserId)
WHERE
    users.usrId = 16  AND `prtTimeSheetId` = ( 
SELECT MAX(  `prtTimeSheetId` ) 
FROM projetstaches ) 

当我做这样的事情时,它会返回空白,因为最后输入的用户是 7。

那么我如何检索我的最后一个用户 = 16?

这是我的表格(这是一个旧版本,但很高兴知道现在的数据看起来更完整,但表格名称相同)

http://pastebin.com/6LBwGtc3

【问题讨论】:

    标签: mysql database select max where


    【解决方案1】:

    子查询需要使用连接来为这个用户选择最高的prtTimeSheetId,而不是整个表。

    SELECT * 
    from
        projetstaches
            inner join
        timesheets
            on (timesheets.timId = projetstaches.prtTimeSheetId)
            inner join
        users
            on (users.usrId = timesheets.timUserId)
    WHERE
        users.usrId = 16 
    AND prtTimeSheetId = (
        SELECT MAX(preTimeSheetId)
        from 
            projetstaches
                inner join
            timesheets
                on (timesheets.timId = projetstaches.prtTimeSheetId)
                inner join
            users
                on (users.usrId = timesheets.timUserId)
        WHERE users.usrId = 16)
    

    【讨论】:

    • 确实只能给我最后一个 timID 的 1 条信息。我只有 1 个 timID(主键),但链接到 prtTimesheetID(我可以有很多)例如我在时间表(timId)中有编号 501,但在 projetstache(timeSheetID0 表示编号 500,我有星期二、星期一、星期六。跨度>
    • 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在第 15 行的“inner join timesheets on (timesheets.timId = projetstaches.prtTime”附近使用)
    • 抱歉,剪切/粘贴问题,我错过了from 行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    相关资源
    最近更新 更多