MySQLのGROUP_CONCAT関数を使用して文字列を結合したいと考えています。
下の図のような取得をしたいのですが、試した限りではうまくいきませんでした...
何か良い方法はないでしょうか?
なお、結果のid列(取得したい列とは別)にはAUTO_INCREMENTを設定しています。
GROUP_CONCAT関数以外でも構いませんので、よろしくお願いします。
動作環境
Raspberry Pi 2 Model B
Raspbian 8.0
MySQL Server 5.5.54
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答6件
0
GROUP_CONCAT内でORDER BYを使用できるので、これで希望の結果が得られるのではないでしょうか。
sql
1SELECT student_name, 2 GROUP_CONCAT(DISTINCT test_score 3 ORDER BY test_score DESC SEPARATOR ' ') 4 FROM student 5 GROUP BY student_name;
投稿2017/03/29 01:44
総合スコア1149
0
こういうことなのでしょうか?
SQL
1create table tbl(id int primary key auto_increment,data varchar(20)); 2insert into tbl(data) values('a'),('b'),('c'),('d'),('e'),('f'),('g'); 3select group_concat(data order by id desc) as datas from tbl where id>=3 and id<=5;
投稿2017/03/29 01:56
総合スコア114814
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
SQL
1CREATE TABLE `test` ( 2 `id` int(11) NOT NULL AUTO_INCREMENT, 3 `value` varchar(2) NOT NULL, 4 PRIMARY KEY (`id`) 5) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1; 6 7INSERT INTO `test` VALUES (1, '1'); 8INSERT INTO `test` VALUES (2, '2'); 9INSERT INTO `test` VALUES (3, '3'); 10INSERT INTO `test` VALUES (4, '4'); 11INSERT INTO `test` VALUES (5, '5');
とした状態で、
SQL
1SELECT value FROM test ORDER BY value DESC 3;
value |
---|
5 |
4 |
3 |
ですから、まずこれを昇順に戻して
SQL
1SELECT * FROM (SELECT value FROM test ORDER BY value DESC LIMIT 3) vt1 ORDER BY vt1.value ASC;
value |
---|
3 |
4 |
5 |
としてから group_concat して、
SQL
1SELECT group_concat(vt2.value) FROM 2 (SELECT value FROM 3 (SELECT * FROM test ORDER BY value DESC LIMIT 3) vt1 4 ORDER BY vt1.value ASC) vt2;
group_concat(vt2.value) |
---|
3,4,5 |
ですかねえ。
投稿2017/03/29 01:48
総合スコア13703
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/29 01:56
0
Viewを使うことになりますが、このような方法はいかがでしょうか。
- 該当のテーブルの末尾から3件を取るビューを作成します。
SQL
1CREATE VIEW Last3 AS 2 SELECT * FROM hoge ORDER BY id DESC LIMIT 0, 3;
- 該当のテーブルのidをWHERE INを使って末尾3件に絞り込み、それをGROUP_CONCATで結合する。
SQL
1SELECT 2 GROUP_CONCAT(id) 3FROM 4 hoge 5WHERE 6 id IN (SELECT id FROM Last3) 7ORDER BY 8 id ASC;
投稿2017/03/29 01:59
総合スコア9206
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/29 02:00
2017/03/29 02:02
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。