MySQL
【SQL】3つの列から2番めに長い列を抽出
ヤス
更新日:2021/08/11
どうも、ヤスです。
ある日、上司からこのような指令が飛びました。
「商品リストから、商品サイズの縦、横、高さの内、2番めに長い辺がXXXcm以上のリスト抽出してくれ!(なるはやで)」
こんなんええやん
SQLにはGREATEST関数、LEAST関数があるので、それを駆使して、取ってみます。
https://dev.mysql.com/doc/refman/5.6/ja/comparison-operators.html#function_greatest
https://dev.mysql.com/doc/refman/5.6/ja/comparison-operators.html#function_least
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
SELECT id , h /* 高さ */ , w /* 横 */ , l /* 縦 */ FROM hogehoge WHERE IF(h = LEAST(h, w, l) /* 高さが一番短い時 */ , LEAST(w, l) /* 横、縦で短い方を返す */ , IF(pm.height = GREATEST(h, w, l) /* 高さが一番長い時 */ , GREATEST(w, l) /* 横、縦で長い方を返す */ , h /* 高さが一番長くもなく、一番短くもない場合 */ ) ) >= xxx |
どこかの知恵袋をまるまる参考にしてますw
ロジックを見れば、あぁ、なるほどと思いますが、こういう頭の体操は大事ですね。
頑張ってSQL勉強せねば。