gpt4 book ai didi

mysql - 简短的 sql 挑战,结果集上有多个下一行,带有 group by 和 count

转载 作者:行者123 更新时间:2023-11-30 00:42:25 26 4
gpt4 key购买 nike

我正在编写一个 wiki,并希望显示其他用户对用户输入所做的更改。

假设使用一个名为Input的表作为输入日志,简化为表(列):

输入(in_id、to_id、文本、us_id)

in_id是表Input的主键

to_id是表Topic的主键

文本是一些文本

us_id是User表的主键

以下示例...

+ - - - - - + - - - - -+ - - - - -+ - - - - -+
| in_id | to_id | text | us_id |
+ - - - - - + - - - - -+ - - - - -+ - - - - -+
| 1 | 12 | foo | 1 |
| 3 | 13 | bar | 1 |
| 4 | 34 | blub | 5 |
| 5 | 12 | fo | 5 |
| 6 | 12 | f | 1 |
| 7 | 13 | b | 6 |
| 8 | 13 | ba | 1 |
| 9 | 13 | bar | 7 |
+ - - - - - + - - - - -+ - - - - -+ - - - - -+

…对于 us_id = 1 的用户应该会产生以下结果

+ - - - - - + - - - - -+ - - - - -+ - - - - -+
| in_id | to_id | text | us_id |
+ - - - - - + - - - - -+ - - - - -+ - - - - -+
| 5 | 12 | fo | 5 |
| 7 | 13 | b | 6 |
| 9 | 13 | bar | 7 |
+ - - - - - + - - - - -+ - - - - -+ - - - - -+

我的查询思路:

我正在查找(结果集中的所有 to_id 和多个 to_id 且至少有一个 us_id = 1)中的每一下一行,其中 us_id != 1

各种sql语句都不起作用,因为我无法处理结果集的下一行。

下一行的 SQL 语句...

SELECT MIN(in_id) FROM Input WHERE in_id > (in_id out of the resultset)

...以及选择多次存在的 to_id...

GROUP BY in_id HAVING COUNT(in_id)>1

...不是问题。

应该怎样做?

最佳答案

假设 in_id 序列是递增的,并且“下一行”意味着 in_id 高于“上一行”,则以下查询将产生结果:

select input.*
from
(select min(in_id) as idmin, to_id
from input
where us_id=1 group by to_id
) mintable,
input
where
(input.to_id = mintable.to_id and input.in_id > mintable.idmin)
and us_id <> 1;

内表将选择用户开始编辑的页面,第二个查询将选择此页面的所有后续更改。

关于mysql - 简短的 sql 挑战,结果集上有多个下一行,带有 group by 和 count,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21657146/

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