gpt4 book ai didi

php - MySQL ORDER BY "count(*) and 2 other parameters"来自另一个表

转载 作者:行者123 更新时间:2023-11-29 01:35:53 25 4
gpt4 key购买 nike

我已经为这个问题苦苦挣扎了大约一个月..一直在搜索和阅读许多帖子,但仍然无法弄清楚如何使这项工作..

基本上:我有 2 个数据库表 fun_postsfun_post_upvotes 我想

SELECT * 
FROM fun_posts
ORDER BY (HOTTEST POSTS(MOST UPVOTED THIS WEEK))

这是我最新的代码,不能用

SELECT * 
FROM fun_posts
ORDER BY (SELECT count(*), image_id, date
FROM fun_post_upvotes
GROUP BY image_id
ORDER BY DATE(date) > (NOW() - INTERVAL 7 DAY) DESC,
count(*) DESC,
date DESC)

如果我将这一行分成 2 个不同的 SELECT 函数,它们就可以工作。我可以选择简单的帖子,也可以选择按我想要的顺序排列的赞成票数。

但是如果我像这样把它们排成一行,我会得到以下错误:

#1241 - Operand should contain 1 column(s)

编辑 NR 1:

fun_postsImagefun_post_upvotesImage

我检查的答案有问题:

在这里,看看我的 select 函数中的帖子是如何排序的。 (它选择了我想要的)10->134->132->2->13

Image

这里用给定的代码(它选择图像,但不是按那个顺序)10->122->39->8->110

Image

最佳答案

您可以使用联接来执行此操作

SELECT fp.*, fpu.`cnt`
FROM fun_posts fp
LEFT JOIN ( SELECT image_id, COUNT(*) AS cnt
FROM fun_post_upvotes
WHERE `date` > (NOW() - INTERVAL 7 day)
GROUP BY image_id
) fpu ON ( fpu.image_id = fp.id )
ORDER BY fpu.cnt DESC, fp.`date` DESC, fp.`id` DESC;

它从按 image_id 分组的 fun_post_upvotes 中选择一个列表并计算行数。该列表返回到 fp.id 上的主查询和匹配(LEFT JOIN)。查询将首先显示过去 7 天内投票最多的项目,而不是最少的。如果没有找到赞成票,结果仍会返回它们,但在底部没有特定顺序。

您可以编辑顺序,以您喜欢的顺序获取项目。

这里是sqlfiddle.com

关于php - MySQL ORDER BY "count(*) and 2 other parameters"来自另一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46027356/

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