gpt4 book ai didi

MySQL:如何为列的每个值保留前 1000 行

转载 作者:行者123 更新时间:2023-11-30 23:52:03 24 4
gpt4 key购买 nike

我需要有关此查询的一些帮助:我想从我的表中删除以下行。该表有 4 列:UserID、UserName、Tag、Score。

对于每个标签,我只想保留得分最高的前 1000 名用户。

所以我需要按分数排序,并为每个标签保留前 1000 个用户。

谢谢

最佳答案

根据其他答案,

DELETE FROM table t1
WHERE UserID NOT IN (SELECT userID FROM table t2
WHERE t2.tag = t1.tag
ORDER BY Score DESC LIMIT 1000);

这假设 UserID 是一个唯一/主键字段。如果不是,您可以这样做:

DELETE FROM table t1
WHERE UserID||' '||Tag NOT IN (SELECT UserID||' '||Tag FROM table t2
WHERE t2.tag = t1.tag
ORDER BY Score DESC LIMIT 1000);

放入空格是因为我知道我必须在 Oracle 上做类似的事情,但不确定没有它 MySQL 会如何处理它。

关于MySQL:如何为列的每个值保留前 1000 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2804627/

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