私は次のような列を持つ16k行のテーブルを持っています
ID, author_name, letter;
(ここで、文字は名からの最初の文字です)
azからの文字ごとに3人のグループで著者を一覧表示するSQLクエリを作成したい
お気に入り:
A
Albert,
Ana,
Antony,
B
Ben,
Boston,
Bell,
このクエリを作成するにはどうすればよいですか?ありがとうございました。
私は次のような列を持つ16k行のテーブルを持っています
ID, author_name, letter;
(ここで、文字は名からの最初の文字です)
azからの文字ごとに3人のグループで著者を一覧表示するSQLクエリを作成したい
お気に入り:
A
Albert,
Ana,
Antony,
B
Ben,
Boston,
Bell,
このクエリを作成するにはどうすればよいですか?ありがとうございました。
これを試して、 :
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
以前の値と比較し、文字が変更されたときに番号を付け直して、それ以外の場合はインクリメントすることで機能します。
私はあなたのためにクエリを作成しました
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/