-1

我有一个 16k 行的表,其中的列如下

ID, author_name, letter;(其中字母是名字的第一个字母)

我想做一个 sql 查询,为来自 az 的每个字母按 3 人一组列出作者

喜欢:

A

Albert, Ana, Antony,

B

Ben, Boston, Bell,
我怎样才能写这个查询?谢谢你。

4

2 回答 2

1

尝试这个, :

set @counter =0, @letter:=''; 

select * from 
(select @counter:=if(letter=@letter, @counter+1,1) as counter, @letter = letter,  author
from table
order by letter, author) as t 
where counter<=3
order by letter, name

它用于与以前的值进行比较,并在字母发生变化时重新编号,否则通过递增。

于 2013-03-26T18:58:14.163 回答
0

我已经为你创建了查询

SELECT GROUP_CONCAT(id) FROM TABLE NAME ORDER BY id 
SELECT GROUP_CONCAT(author_name) FROM TABLE NAME ORDER BY id 
SELECT GROUP_CONCAT(letter) FROM TABLE NAME ORDER BY id 

现在你会得到这样的结果:

A

Albert, Ana, Antony,

B

Ben, Boston, Bell, 

http://www.mysqlperformanceblog.com/2006/09/04/group_concat-useful-group-by-extension/

于 2013-03-26T18:54:54.383 回答