【问题标题】:SQL Select n per letter of the alphabetSQL Select n 每个字母
【发布时间】:2016-05-22 13:48:54
【问题描述】:

我想进行如下查询: select * from somefield order by name

该顺序当然是按字母顺序排列的,我希望字母表中的每个字母只显示 5 个匹配项。这可能与查询本身还是我应该使用 php 来查询字母表中的每个字母?

以这种方式返回的行数最多只能为 5 x 26 行。

【问题讨论】:

  • quel SQL? row_number() OVER(partition by LEFT(name,1)) xx ... WHERE xx <= 5

标签: sql select max alphabet


【解决方案1】:

大多数数据库都支持 ANSI 标准窗口函数。为此,您可以使用row_number()

select t
from (select t.*,
             row_number() over (partition by left(name, 1) order by name) as seqnum
      from t
     ) t
where seqnum <= 5;

注意:并非所有数据库都支持left(),您可能需要substr(name, 1, 1)substring(name, 1, 1)

【讨论】:

  • 我正在我的 phpmyadmin 中执行此操作,但这不起作用。 left() 或 substr() 也不在那里工作。
猜你喜欢
  • 2012-02-18
  • 2016-01-11
  • 1970-01-01
  • 1970-01-01
  • 2011-05-10
  • 2015-06-21
  • 1970-01-01
  • 2012-07-24
  • 2015-11-01
相关资源
最近更新 更多