😽
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;
最後に
最近はもう構文思えるの諦めて、chatGPTに相談しています
Discussion