質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

2回答

1707閲覧

カラム同士の和でソートする方法

avantgarden

総合スコア121

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2022/01/04 12:43

非常によくあるケースだと思うのですが、
シンプルな方法がハタと分からずご教授頂きたいです。

単純化のために、AさんとBさん2教科の点数結果から、合計点の大きい順に
データを取得する場合を想定します。

resultテーブル

namesubject1subject2
A5060
B4080

取得したいデータ

namesum
B120
A110

上から下の結果を得たいのですが、サブクエリを使って

select r.name, s.sum from result r join ( select name, subject1 + subject2 as sum from result ) s on s.name = r.name order by s.sum desc

とする方法しか思いつかず、もっとシンプルな方法があれば教えていただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

すみません。

select name, subject1 + subject2 as sum from result order by sum desc

でいけました。手元のプログラムでは他のテーブルをjoinしてたのですが、
ソートで使用するカラムにテーブル名のエイリアスをつけてしまってたのが
原因で、unknown column となってました。

また、過去ログもあったようで、まず確認するようにいたします。
https://teratail.com/questions/349571

投稿2022/01/04 12:51

avantgarden

総合スコア121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

解決済みのようですが、合計値を参照する機会が多いなら生成列(自動計算列)を設定しておくと便利です

SQL

1create table tbl( 2id int primary key auto_increment, 3name varchar(10), 4sub1 int, 5sub2 int, 6sum int as (sub1+sub2), 7index(sum)); 8insert into tbl(name,sub1,sub2) values 9('A',50,60), 10('B',40,80), 11('C',10,10), 12('D',30,70), 13('E',90,80), 14('G',60,50); 15 16select * from tbl order by sum desc;

生成列にはインデックスも貼れます

投稿2022/01/05 03:20

編集2022/01/05 03:22
yambejp

総合スコア114572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

avantgarden

2022/01/06 14:49

ありがとうございます。 勉強になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問