gpt4 book ai didi

mysql - sql将嵌套选择子查询结果集存储到变量中

转载 作者:行者123 更新时间:2023-11-29 15:30:56 24 4
gpt4 key购买 nike

我正在尝试从作为内部选择查询输出的结果集中获取下一个/上一个记录。

这是我的查询:

select qs.*
from
(
select
tsk.id,
tsk.request_id,
tsk.category_group,
tsk.category,
tsk.hash_id
from
user_tasks as usr
inner join
unassigned_tasks as tsk
on usr.task_id = tsk.id
where
usr.assigned_to = 12
AND
BINARY hash_id NOT IN ( SELECT hash_id FROM product_match_unmatches WHERE request_id = tsk.request_id AND auto_unmatched_by IS NOT NULL )
) as qs

WHERE qs.id = ( SELECT min(qs.id) FROM qs WHERE qs.id > 5181 )

如果内部查询返回的结果集值为:

id
------
4179
4280
5181
6182
6283

然后我需要选择 id 6182 的行。

但看起来我必须在外部 where 查询中再次提及内部查询。

还有别的办法吗?

最佳答案

如果您想选择内部查询的第二个到最后一个值,您可以使用 session 变量进行行编号:(编号取决于给定内部查询的行顺序)

set @rank = 0;
select
tsk.id,
tsk.request_id,
tsk.category_group,
tsk.category,
tsk.hash_id
from (
select
tsk.id,
tsk.request_id,
tsk.category_group,
tsk.category,
tsk.hash_id,
@rank := @rank + 1 as rank
from
user_tasks as usr
inner join
unassigned_tasks as tsk
on usr.task_id = tsk.id
where
usr.assigned_to = 12
AND
BINARY hash_id NOT IN ( SELECT hash_id FROM product_match_unmatches WHERE request_id = tsk.request_id AND auto_unmatched_by IS NOT NULL )
)tbl
where rank = @rank - 1;

您可以使用这样的查询获得所需的输出。 :) 谢谢

关于mysql - sql将嵌套选择子查询结果集存储到变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58742526/

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