😽

ORDER BY は 列毎に指定できる

に公開

初めに

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に相談しています

Discussion