查找具有相同值且 select 较新的行

Find rows that have the same value and select the newer one

我有一个 table,看起来像这样:

serialNr sensorNr ModifyDate
1234 12EE56423 2022-04-06
4567 12EE56423 2018-06-12
6789 AD3FF0C44 2018-03-08
9101 AD3FF0C44 2019-06-07

从具有相同 sensorNr 的行中,我只想 select 具有较新 ModifyDate 的行,因此结果应如下所示:

serialNr sensorNr ModifyDate
1234 12EE56423 2022-04-06
9101 AD3FF0C44 2019-06-07

我怎样才能做到这一点?

在 MySQL 8+ 上,我们可以在这里使用 ROW_NUMBER

WITH cte AS (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY sensorNr ORDER BY ModifyDate DESC) rn
    FROM yourTable
)

SELECT serialNr, sensorNr, ModifyDate
FROM cte
WHERE rn = 1;

你可以

SELECT
  serialNr, sensorNr, ModifyDate
FROM
  your_table_name_goes_here
GROUP BY
  sensorNr
ORDER BY
  ModifyDate DESC

它将为每个唯一的 sensorNr 提供一行,并且按 ModifyDate 排序将确保 ModifyDateserialNr 的值将是“最新的” “

db-fiddle