gpt4 book ai didi

sql - 形成选择两个字段的最大差异的 SQL 查询

转载 作者:可可西里 更新时间:2023-11-01 07:21:32 24 4
gpt4 key购买 nike

我正在尝试选择具有最有效投票的记录。每条记录都有一个 id,MySQL 数据库中的赞成票数 (int) 和反对票数 (int)。

我知道基本的更新、选择、插入查询,但我不确定如何形成类似于以下内容的查询:

SELECT * 
FROM topics
WHERE MAX(topic.upvotes - topic.downvotes)

最佳答案

您没有正确使用 MAX()。

这是一个非常快速的查询:

SELECT id, (upvotes - downvotes) AS popular  
FROM topics
ORDER BY popular DESC LIMIT 1

运行更新:

UPDATE topics, 
(here you put your select statement from above in parenthesis ) AS popular_query
SET topic.description = "I'm popular"
WHERE topics.id = popular_query.id

我只是在一个有 250,000 条记录的表上运行它(它非常相似 - 库存使用 - 寻找最受欢迎的部分)并且它花了 .203 秒 - 在我的开发机器上 - 这甚至不是生产服务器(在哪里它 tppl 0.016 秒)

更新:

是的,我没有考虑过您可能有不止一个顶级结果的可能性。

SELECT GROUP_CONCAT(id) AS popular_ids, (upvotes - downvotes) AS popular 
FROM topics
GROUP BY popular ORDER BY popular DESC LIMIT 1

popular_ids - 将包含流行记录作为文本字段,如果需要可以轻松解析。

关于sql - 形成选择两个字段的最大差异的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2430282/

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