从列中选择记录

Selecting records from column

我必须 select 100 个最高记录 按列中的数字。 结构看起来像这样:

---------
| A | B |
---------
| 1 | 1 |
| 22| 2 |
| 31| 1 |
| 41| 2 |
---------

我需要为每个 nr B select A 列中的最高数字。在这个例子中它将是

---------
| A | B |
---------
| 31| 1 |
| 41| 2 |
---------

B1 = 31, 1; B2 = 41, 22.

任务看起来很简单,但我在 A 列中有超过 1000 万个数字,在 B 列中有大约 40 000 nr。

你能帮帮我吗?我不太擅长 sql 和脚本构建:(

我做的一个项目也有类似的问题。

您应该将标签 MySql 更正为 SQLSERVER.

我用这个SQL Fiddle做一个关于问题的fiddle,我想这就是你想要的。

MS SQL Server 2014 架构设置:

create table tab1 (

  a int,
  b int

);

insert into tab1 (a, b) values 
(1,1),
(22,2),
(11,3),
(31,1),
(10,3),
(41,2);

查询 1:

SELECT TOP 100 Max(a) as a, b
FROM tab1
GROUP BY b
ORDER BY b asc

Results:

    |  a | b |
    |----|---|
    | 31 | 1 |
    | 41 | 2 |
    | 11 | 3 |

据我了解,我想这可能有所帮助

Select Top 10 A , B from tableName group by B , A

这将为您提供以下内容

---------
| A | B |
---------
| 1 | 1 |
| 31| 1 |
| 22| 2 |
| 41| 2 |
---------