gpt4 book ai didi

mysql - SQL 对所有行进行无重复排序

转载 作者:行者123 更新时间:2023-11-29 02:06:05 26 4
gpt4 key购买 nike

我有一个看起来像这样的表:

________________________
|id|value|date|approved|
-----------------------

我需要做的是让每一行都获得 approved = 1。这部分很明显。对于每次出现的值,我只想要最近的行(按日期排序)。

意思是这样的表:

________________________
|id|value|date|approved|
-----------------------
|1 |Foo | 5 | 1 |
|2 |Bar | 6 | 1 |
|3 |Foo | 8 | 1 |
-----------------------

我只想要 ID 为 2 和 3 的行。

我假设我需要以某种方式使用 DISTINCT,但我不确定如何使用。有人可以帮我吗?

最佳答案

SELECT  m.*
FROM (
SELECT DISTINCT value
FROM mytable
) md
JOIN mytable m
ON m.id =
(
SELECT id
FROM mytable mi
WHERE mi.value = md.value
AND mi.approved = 1
ORDER BY
mi.value DESC, mi.date DESC, mi.id DESC
LIMIT 1
)

(value, date, id) 上创建索引以使其快速运行。

关于mysql - SQL 对所有行进行无重复排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5790619/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com