查找具有相同值且 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
排序将确保 ModifyDate
和 serialNr
的值将是“最新的” “
我有一个 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
排序将确保 ModifyDate
和 serialNr
的值将是“最新的” “