gpt4 book ai didi

mysql - 是否可以存储订购商品的排名而不是其分数?

转载 作者:行者123 更新时间:2023-11-29 06:22:28 26 4
gpt4 key购买 nike

例如,我有一个查询,它根据最大数量的项目对 val2 进行排序。

INSERT INTO table d (val1, val2 ,cnt)
SELECT val1, val2 , max(cnt) as cnt
FROM table2 WHERE val1 =x GROUP BY
val2 ORDER BY max(cnt) DESC LIMIT 10;

相反,我想对结果进行排名,因此 cnt 不会是一个随机数,而是如果表 2 中的相应值具有最高计数,则为 1;如果是第二高计数,则为 2,等等。

最佳答案

我会避免存储行的位置(排名、顺序等)。

推理:

  • 在最坏的情况下,INSERT 需要对整个表重新编号
  • 删除也需要同样的
  • 对 cnt 字段的更新可能需要相同的内容

我建议使用以下内容作为此类查询的指南:

SET @i := 0;
SELECT * FROM (
SELECT @i := @i+1 AS rank,
...
FROM table
ORDER BY ...
) t;

具体来说,对于您的查询:

SET @i := 0;
SELECT
@i := @i + 1 AS rank,
val1,
val2,
cnt
FROM (
SELECT
val1,
val2,
MAX(cnt) AS cnt
FROM table2
WHERE val1 = ?
GROUP BY val2
ORDER BY cnt DESC
) t
LIMIT 10;

关于mysql - 是否可以存储订购商品的排名而不是其分数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2328237/

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