根据列选择最新的timestsamp

时间:2015-07-30 05:57:19

标签: mysql timestamp

我有一个问题:

SELECT ti.*
FROM New_OTPMS.TBL_TESTER_ONLINE_INFO ti
INNER JOIN TBL_TESTER_LIST tl
ON ti.tester_name = tl.tester_name
WHERE ti.board_name = 'DC30'
AND tl.tester_type = 'UFLEX'
ORDER BY ti.tester_name

在我正在选择的表格TBL_TESTER_ONLINE_INFO中,有一个名为last_checked的列,它保存了记录的时间戳。时间戳都不同。

但是在此表中有一列可以包含重复的记录tester_name。所以我可以test1test1,但两者都有不同的时间戳。

示例:

tester_name       last_checked
   test1          2015-07-30 03:56:51
   test1          2015-07-31 05:56:38
   test2          2015-07-31 10:10:36
   test2          2015-07-31 02:27:12

我想获得最新的时间戳。所以我想得到的输出示例是

tester_name       last_checked
   test1          2015-07-31 05:56:38
   test2          2015-07-31 02:27:12

我不确定如何修改我正在使用的查询,我尝试group by last_checked但显然这是错误的方式。我已经看到了使用内连接的其他答案

SELECT ti.*
FROM New_OTPMS.TBL_TESTER_ONLINE_INFO ti
INNER join
(
    SELECT id, max(last_checked) as mts
    FROM New_OTPMS.TBL_TESTER_ONLINE_INFO
    GROUP BY id
)  s2 on s2.id = ti.id and ti.last_checked = s2.mts
INNER JOIN TBL_TESTER_LIST tl
ON ti.tester_name = tl.tester_name
WHERE ti.board_name = 'DC30'
AND tl.tester_type = 'UFLEX'
ORDER BY ti.tester_name

但它返回与未修改查询相同的行(带有重复项)。

任何帮助?

P.S。当然,表格中有更多列,但插图只是为了在这个问题中显示一个简单的例子。

编辑:TBL_TESTER_ONLINE_CONFIG样本数据

 id      tester_name        frame       board_name  config    part_no, serial_no, license_count, legal_enabling   last_checked             log_name
'105318' 'UFLEX-02' 'LICENSE_ENABLERS' 'DC30'     '1'       ' '      ' '        'N/A'          '1,0'          '2015-07-30 00:35:15' 'IGXLEventLog.7.30.2015.00.34.21.000.log'
'105048' 'UFLEX-02', 'LICENSE_ENABLERS' 'DC30'    '1'       ' '      ' '        'N/A'          '1,0'          '2015-07-29 15:31:42' 'IGXLEventLog.7.29.2015.15.30.46.344.log'
'109709' 'UFLEX-05', 'LICENSE_ENABLERS' 'DC30'    '1'       ' '      ' '        'N/A'          '1,0'          '2015-07-30 05:10:16' 'IGXLEventLog.7.30.2015.05.09.45.515.log'
'108802' 'UFLEX-05', 'LICENSE_ENABLERS' 'DC30'    '1'       ' '      ' '        'N/A'          '1,0'          '2015-07-30 01:34:08' 'IGXLEventLog.7.30.2015.01.33.36.891.log'

忽略除tester_name列和last_checked列之外的所有标记。只是想确保我只获得一个测试者名称。我正在为Web应用程序(在PHP中)执行此操作以获取特定测试人员,如果该信息有帮助。

1 个答案:

答案 0 :(得分:0)

您可以直接使用Group C - Invoice("cd", 07-02-2015) - Invoice("car", 06-08-2015) Group A - Invoice("cd", 06-24-2015) - Invoice("car", 06-01-2015) Group B - Invoice("cd", 04-21-2015) - Invoice("car", 06-17-2015) 功能检查最新时间戳并使用max(last_checked),这样它就会为您提供不同的价值。请尝试以下查询:

GROUP BY tester_name

我只添加了两个字段,您可以根据需要添加。