gpt4 book ai didi

mysql - 仅提取第一个 "percent"行

转载 作者:行者123 更新时间:2023-11-29 05:22:54 27 4
gpt4 key购买 nike

想象一下,我正在根据评分对行进行排序,并且我只希望根据公开的行总数(不时发生变化,因此应该在途中计算)确定一定数量。这是显示每一行的子查询,以及我尝试使用但没有成功的令人毛骨悚然的技巧:

SELECT (
SELECT
p.post_id,
AVG(r.numeric_rate) as numeric_rate
FROM
post p
LEFT JOIN rating r
ON p.post_id = r.post_id
WHERE
r.enabled > 0
GROUP BY p.post_id
ORDER BY numeric_rate DESC
)

LIMIT CEIL(0.10 * COUNT(*))

MySQL 将很多事情归咎于我,以至于我有点尴尬。我一直以“PHP 方式”来完成此操作,方法是获取行数并在获取一些数据后停止,但我想以“好的方式”进行操作,期望响应时间更快一些。你能帮我解决这个问题吗?

PS:由于某些隐私政策,我无法向您显示字段/表的真实名称,因此可能会有一些拼写错误(但我希望不会)

最佳答案

实际上这不是解决您问题的最佳方法,但变通很有趣 :)

set @total := CEIL(0.1 * (
SELECT
count(distinct(post_id))
FROM
post p JOIN rating r ON p.post_id = r.post_id
WHERE
r.enabled > 0));

set @i := 0;
SELECT
*,
@i:=@i+1
FROM
(
SELECT p.post_id, AVG(r.numeric_rate) as numeric_rate
FROM
post p JOIN rating r ON p.post_id = r.post_id
WHERE
r.enabled > 0
GROUP BY
p.post_id
ORDER BY
numeric_rate DESC
) as tmp
WHERE
@i<@total

关于mysql - 仅提取第一个 "percent"行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23560021/

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