根据列选择最新的时间戳

Selecting latest timestsamp based on column

我有一个问题:

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

在我选择的 table table TBL_TESTER_ONLINE_INFO 中,有一个名为 last_checked 的列用于保存记录的时间戳。时间戳都不同。

但是在这个table中有一列可以包含重复的记录,即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

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

有什么帮助吗?

P.S。 table 当然还有更多列,但插图只是为了显示此问题中的一个简单示例。

编辑: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 中)执行此操作以获得特定的测试人员。

您可以直接使用 max(last_checked) 函数来检查最新的时间戳并使用 GROUP BY tester_name 这样它会给您不同的值。尝试以下查询:

SELECT ti.tester_name, MAX(ti.last_checked)
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'
GROUP BY ti.tester_name
ORDER BY ti.tester_name

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