mysql - SQL - 获取以字母开头的前 10 个用户名

标签 mysql sql

我有一长串用户名。我正在尝试使用 Visual Studio c# 和本地数据库获取以 A、B、C、D 开头的前 10 个用户名。

SELECT  tmpA.UserName, tmpB.UserName ...
FROM (  
SELECT top 10 [UserName]
FROM [Users]
WHERE UserName LIKE 'A%'
) tmpA,
(  
SELECT top 10 [UserName] 
FROM [Users]
WHERE UserName LIKE 'B%'
) tmpB

我正在尝试获得如下所示的结果:

a   | b   | c   ...
aa  | bb  | cc  ....
aaa | bbb | ccc ...

其中第一列包含以“A”开头的前 10 个用户名,第二列包含以“B”等开头的前 10 个用户名。

希望你们中的一个人可以帮助我。预先感谢您

最佳答案

在 SQL Server 中,您可以使用窗口函数和pivot 或条件聚合来执行此操作:

select max(case when left(name, 1) = 'a' then name end) as name_a,
       max(case when left(name, 1) = 'b' then name end) as name_b,
       . . .
       max(case when left(name, 1) = 'z' then name end) as name_z
from (select t.*,
             row_number() over (partition by left(name, 1) order by name) as seqnum
      from table t
     ) t
where seqnum <= 10
group by seqnum

关于mysql - SQL - 获取以字母开头的前 10 个用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29142894/

相关文章:

mysql - 如何从三个表中提取查询

MySQL 索引 : Why does multi-column index perform worse than single column index?

mysql - 执行hibernate查询时出现异常

Python 2.7 错误,%s

mysql - 从另一个表外键中选择符合条件的primary_keys

php - 如何在不同时间将2条记录存储在同一列上?

sql - 关于 SQL Server HierarchyID 深度优先性能的问题

mysql - 恢复丢失的mysql数据

php - Codeigniter 重建查询输出数组以插入另一个表中

MYSQL数据库设计,大表间查询