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
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勉強せねば。