メインコンテンツへスキップ

ORDER BY は 列毎に指定できる

· loading · loading ·
kiitosu
著者
kiitosu
画像処理やデバイスドライバ、データ基盤構築からWebバックエンドまで、多様な領域に携わってきました。地図解析や地図アプリケーションの仕組みにも経験があり、幅広い技術を活かした開発に取り組んでいます。休日は草野球とランニングを楽しんでいます。
目次

初めに
#

SQLの構文って、というかプログラム全般だけれども覚えられなくて、毎回ググって書いている。 今日もちょい困ることがあったので記録しておく。

結論
#

ORDER BY は列ごとに指定できる。 考えてみれば当たり前というか、列ごとに指定できないとしたら相当面倒ですよね。

やったこと
#

こんなクエリで、全ての項目を降順で並べようとした。

Schema (PostgreSQL v9.4)

CREATE TABLE product(
  name text,
  kind_id int,
  price int,
  weight_kg int
);

INSERT INTO product values
('冷蔵庫A',1,100000,60),
('冷蔵庫B',1,120000,63),
('冷蔵庫C',1,90000,50),
('扇風機A',2,1200,2),
('扇風機B',2,5600,3),
('テレビA',3,200000,10),
('テレビB',3,150000,11),
('テレビC',3,110000,9);

Query #1

SELECT * FROM product ORDER BY  kind_id,  price desc , weight_kg desc;

結果は

name kind_id price weight_kg
冷蔵庫B 1 120000 63
冷蔵庫A 1 100000 60
冷蔵庫C 1 90000 50
扇風機B 2 5600 3
扇風機A 2 1200 2
テレビA 3 200000 10
テレビB 3 150000 11
テレビC 3 110000 9

全然降順じゃないじゃん! で、困ったわけですが。

こうすればいいだけですね。

SELECT * FROM product ORDER BY kind_id desc, price desc, weight_kg desc;


View on DB Fiddle

最後に
#

最近はもう構文思えるの諦めて、chatGPTに相談しています

Reply by Email

関連記事

AWS認定DAS勉強:KinesisClientLibrary(KCL) vs KinesisConnectorLibrary
· loading · loading
SQSのクオータが分かりにくい
· loading · loading
The authenticity of host 'github.com' can't be established.
· loading · loading