gpt4 book ai didi

mysql - 选择某一列的前 n 个值不同的行

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

我想知道是否有可能在 MySQL 中以简单有效的方式执行此操作。我想在我的例子中做的是:

我有一张表,用于存储带有 FK 的博客文本到其他博客信息(标题、用户等)。博客文本可以存储在多行中(如果它是一个很长的文本)。如果有多行,每一行都有一个序列号以了解文本的顺序。

有什么简单的方法可以让我通过一个查询从最高 FK 编号 (postid)(也将是最新添加的)开始选择行,并将响应限制设置为 10 个不同的 FK 值。需要明确的是,我不想将行数限制设置为 10,而只是限制不同的 postid 值。

例如,如果我有下表:

+----------+--------+-----------+
| sequence | postid | text |
+----------+--------+-----------+
| 1 | 50 | 'Bla bla' |
| 1 | 51 | 'Bla bla' |
| 1 | 52 | 'Bla bla' | (1) <-- From here (52 to 61 is 10 different postids)
| 2 | 52 | 'Bla bla' | (2)
| 1 | 53 | 'Bla bla' | (3)
| 2 | 53 | 'Bla bla' | (4)
| 1 | 54 | 'Bla bla' | (5)
| 1 | 54 | 'Bla bla' | (6)
| 1 | 56 | 'Bla bla' | (7)
| 1 | 57 | 'Bla bla' | (8)
| 1 | 58 | 'Bla bla' | (9)
| 1 | 59 | 'Bla bla' | (10)
| 1 | 60 | 'Bla bla' | (11)
| 1 | 61 | 'Bla bla' | (12) <-- To here
+----------+--------+-----------+

这里我想要底部的 12 行,因为它们的 postid 从 61 到 52(包括 52),即 10。括号中的数字只是为了说明我想选择多少行。

我希望这不会太困惑 :) 那么有什么简单有效的方法可以做到这一点吗?

最佳答案

在下面的查询中,我将您的主表INNER JOIN 连接到一个临时表,该表获取(最多)10 个最高的postid 值。这允许您只保留原始表中具有 10 个最高 postid 值之一的记录。您需要的记录被过滤掉,因为它们与临时表中的任何内容都不匹配。

SELECT t1.sequence, t1.postid, t1.text
FROM table t1 INNER JOIN
(
SELECT DISTINCT postid
FROM table
ORDER BY postid DESC
LIMIT 10
) t2
ON t1.postid = t2.postid

关于mysql - 选择某一列的前 n 个值不同的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32474145/

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