在Mysql中,我想从每个类别中选择最下面的2个项目
Category Value 1 1.3 1 4.8 1 3.7 1 1.6 2 9.5 2 9.9 2 9.2 2 10.3 3 4 3 8 3 16
给我:
Category Value 1 1.3 1 1.6 2 9.5 2 9.2 3 4 3 8
从sqlite3迁移之前,我必须首先从每个类别中选择一个最低的类别,然后再排除与之相关的任何内容,我必须再次从每个类别中选择一个最低的类别。然后,等于该类别中新的最低或更少的任何事物都会获胜。如果出现平局,这也将选择2个以上,这很烦人。。。它的运行时间也很长。
我的最终目标是计算一个人进入该类别的最低2分之一(也有一个姓名字段)的次数,这是我不知道该怎么做的一部分。谢谢
您可以尝试以下方法:
SELECT * FROM ( SELECT c.*, (SELECT COUNT(*) FROM user_category c2 WHERE c2.category = c.category AND c2.value < c.value) cnt FROM user_category c ) uc WHERE cnt < 2
它应该给您想要的结果,但是请检查性能是否还可以。