gpt4 book ai didi

mysql - 使用 JSON 数据通过数学对 SQL 行进行排序

转载 作者:行者123 更新时间:2023-11-29 22:35:08 24 4
gpt4 key购买 nike

假设我有一个像这样的MySQL数据库(赞成票和反对票是用户id的JSON数组),id是一个自动递增的整数,内容是文本)

id  upvotes             downvotes    content
--- ------------------- ------------ --------------
1 [1, 5, 15] [1] some text
10 [1, 100, 25] [3, 9] other stuff
17 [5, 10, 1110] [5, 6, 7, 8] also includes
36 [5, 6, 7, 8, 9] [] metadata stuff
37 [5, 6, 8, 10, 1, 7] [4] equal count to 36

我想按赞成票数减去反对票数对返回的行进行排序,然后在相等时按 id 排序,因此 id 的顺序为 36, 37, 1, 10, 17。这在 PHP 中可行吗?如何实现?

(这个问题是 https://stackoverflow.com/questions/29527800/sort-sql-rows-with-math-using-column-data-in-php 的重新发布,因为它的工作原理是对数组进行计数,而不是简单地从行中获取数字。)

最佳答案

MySQL 没有原生 JSON 支持,尽管它似乎即将推出。因此,您必须将这些值视为字符串。基本上,您想要计算每个字符串中的元素数量并按差异进行排序。

您可以通过计算逗号来做到这一点:

order by (length(upvotes) - length(replace(upvotes, ',', '')) ) -
(length(downvotes) - length(replace(downvotes, ',', '')) )

注意:如果您要维护每个可能投票的字符串,也许您还应该在记录中包含一个计数器。

关于mysql - 使用 JSON 数据通过数学对 SQL 行进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29573343/

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