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

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

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

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

1508閲覧

mysqlでソートが行いたい

iorin

総合スコア32

MySQL

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2017/09/05 08:04

###前提・実現したいこと
ORDER BYでソートを行いたいのですが、上手くソートされません。
WHEREの条件でデータ自体は取得できていますが、テーブルに入っている順です。
試しにcolumn1だけで試したりしてみたのですが、それでもダメでした。

###該当のソースコード

SELECT column1 , column2 , column3 , column4 , column5 , DATE_FORMAT(column6,'%Y/%m/%d') as column6 , column7 , column8 , column9 , column10 , column11 , column12 , column13 , (case when column12 = 'B' then '未' when column12 = 'C' then '完' else '' END) as column12 FROM TableName WHERE column1 = "******" ORDER BY column1 ASC , column2 ASC , column3 ASC, column4 ASC, column6 ASC, column12 DESC;

###補足情報(言語/FW/ツール等のバージョンなど)
Server version: 5.5.34

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

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

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

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

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

m.ts10806

2017/09/05 08:19

どういうソート(結果)を行いたいのでしょうか?具体的に記述をお願いします。
Tomak

2017/09/05 13:22

「SELECT ,,,column12」部分と、「CASE (...) AS column12」部分両方に「column12」がありますがタイプミスでしょうか? あと、これだけだと入っているデーター(ソートしたいデーター)がよくわかりません。
guest

回答3

0

SELECT でいったん読み替えたものを取り出したテンポラリテーブルがあるものとして、それに対して ORDER BY をかけるという、屋上屋を重ねる形になりますが……

SQL

1SELECT * FROM ( 2 SELECT column1 , column2 , column3 , column4 , column5 , DATE_FORMAT(column6,'%Y/%m/%d') as column6 , column7 , column8 , column9 , column10 , column11 , column12 , column13 , 3 (case 4 when column12 = 'B' then '未' 5 when column12 = 'C' then '完' 6 else '' END) as column12 7 FROM TableName 8 WHERE column1 = "******" 9) 10ORDER BY column1 ASC , column2 ASC , column3 ASC, column4 ASC, column6 ASC, column12 DESC;

であればうまく行くかな。

投稿2017/09/05 09:00

tacsheaven

総合スコア13703

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

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

iorin

2017/09/06 01:52

返信が遅くなりすみません。 サブクエリで上手く動作しました。 ありがとうございました。
guest

0

ソースコードは実際のものではなく、エイリアスに日本語を指定している場合には、こちら(MySQL - select文でorder by句が正しく効かない場合がある)のようなケースもあるようです。

リンク先ではエイリアスの日本語について書かれていますが、order by 1,2,3のように、selectで記述している項目の並び順での指定も可能です。
※可読性を考慮した場合にお薦めする方法ではありませんが。

若しくは、データがNullの場合の並びについてでしたら、こちら(MySQLでNULLを含む列をORDER BYしたときの挙動
※空文字('')の場合も、挙動はNullと同様なようです。

投稿2017/09/05 08:41

編集2017/09/05 09:00
sazi

総合スコア25173

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

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

iorin

2017/09/05 08:55

エイリアスの記事は試してみましたがダメでした。 また、ORDER BYで指定しているcolumnは全て主キーなのでNULLになることはないんです。。
sazi

2017/09/05 08:59 編集

では、最低限データとソートの仕様、可能なら実際のコード、を質問に追記お願いします。
sazi

2017/09/05 12:57

ソート仕様は出てましたね、すみません。ソート対象のデータが漢字やカナだったりすると文字コードによるソートが変わってきたりする可能性はありますが、先ずはSQLの組み替えの結果次第ですね。
iorin

2017/09/06 01:52

返信が遅くなりすみません。 サブクエリで上手く動作しました。 ありがとうございました。
guest

0

ベストアンサー

column12を操作後別名を元のカラムに競合しないように付けてみてはどうでしょう?
(case
when column12 = 'B' then '未'
when column12 = 'C' then '完'
else '' END) as column13

その上で、order by はcolumn13を利用する

投稿2017/09/05 08:26

yambejp

総合スコア114779

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

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

iorin

2017/09/05 08:56

それであれば上手くいくことは確認が出来ているのですが、PGの都合上同名でつけたいんです。。 他に方法がなければPGをがりがり頑張るしかないかとは思っています。。
yambejp

2017/09/05 09:00

そういうことなら単にorder by句にcase文を書けばいいでしょう。 select句と表記はかぶりますが、そのくらいは仕方ないと思って下さい
yambejp

2017/09/05 11:18

あとはorder 句を除く部分をいちどサブクエリにいれてしまって select * from (本文) as sub order by ・・・ とするとかですね
iorin

2017/09/06 01:52

返信が遅くなりすみません。 サブクエリで上手く動作しました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問