Mysql 如何在SQL中限制一列中的每个特定值
对不起,如果这是一个愚蠢的问题。我可以在Mysql 如何在SQL中限制一列中的每个特定值,mysql,sql,greatest-n-per-group,Mysql,Sql,Greatest N Per Group,对不起,如果这是一个愚蠢的问题。我可以在order BY函数中对我的列进行排序,我可以使用LIMIT函数,但它只给我最大值,但我需要每个最大值限制 我的虚拟表在这里: Col-a col-b A 1001 B 1000 B 999 C 998 A 997 C 996 A 995 A 994 A 993 A 992 B 991 C
order BY
函数中对我的列进行排序,我可以使用LIMIT
函数,但它只给我最大值,但我需要每个最大值限制
我的虚拟表在这里:
Col-a col-b
A 1001
B 1000
B 999
C 998
A 997
C 996
A 995
A 994
A 993
A 992
B 991
C 990
我的期望是(极限3;)
我使用了FIELD()
,但不幸的是我无法管理。我们怎样才能订购那个特定的电话
按函数顺序对所有值进行排序,但我需要为每个值取一个特定的数字。当我使用LIMIT
功能时,仅剪切顶部值
问题是如何在“1列”中排列每个不同的值
编辑:
我试过了
可能有一种更有效的方法,但这可能会让你达到你想要的目的:
SELECT group_a.col_a AS col_a
,group_a.col_b AS col_b
,group_b.col_a AS col_c
,group_b.col_b AS col_d
,group_c.col_a AS col_e
,group_c.col_b AS col_f
FROM (SELECT col_a, col_b FROM my_table WHERE col_a = 'A' ORDER BY col_b DESC LIMIT 100) as group_a,
(SELECT col_a, col_b FROM my_table WHERE col_a = 'B' ORDER BY col_b DESC LIMIT 100) as group_b,
(SELECT col_a, col_b FROM my_table WHERE col_a = 'C' ORDER BY col_b DESC LIMIT 100) as group_c
提供您所需的内容,尽管格式略有不同。请检查并让我知道这是否适合您 从audit.latest_作业实例中选择COL-A、MIN(COL-B)、lead(MIN(COL-B)、1)over(order by MIN(COL-B))、lead(MIN(COL-B)、2)over(order by MIN(COL-B)) 其中COL-B不为null 按COL-A分组试试这个: 根据分区列a给出等级,并按列b说明进行排序。
选择可以粘贴查询的行?请参见我编辑的@zenwraight@Axis你也可以粘贴你想要的输出吗?我不清楚你的问题,对不起,A、B、C是否已修复?请阅读有关格式化代码的编辑帮助。您可以在编辑框下方看到格式化输出。
SELECT col_a,col_b FROM my_table
order BY FIELD(col_b, 'A','B','C') limit 100;
SELECT group_a.col_a AS col_a
,group_a.col_b AS col_b
,group_b.col_a AS col_c
,group_b.col_b AS col_d
,group_c.col_a AS col_e
,group_c.col_b AS col_f
FROM (SELECT col_a, col_b FROM my_table WHERE col_a = 'A' ORDER BY col_b DESC LIMIT 100) as group_a,
(SELECT col_a, col_b FROM my_table WHERE col_a = 'B' ORDER BY col_b DESC LIMIT 100) as group_b,
(SELECT col_a, col_b FROM my_table WHERE col_a = 'C' ORDER BY col_b DESC LIMIT 100) as group_c
select [col-a], [col-b]
from
( select [col-a], [col-b], row_number() over(partition by [col-a] order by [col-b] desc) rnk from table2
) tbl
where rnk <= 3