21611
```

    IF(EXISTS(SELECT price FROM price_h WHERE id = Product.price_h_id limit 1),
                  (SELECT price FROM price_h WHERE id = Product.price_h_id limit 1),
                  Product.f_price
                )
    
```

上記のような、IFで、`(SELECT price FROM price_h WHERE id = Product.price_h_id limit
1)`と`Product.f_price`、算出される数値が100より下なら100,100以上なら、そのまま数値を出したいのですが

```

     IF(EXISTS(SELECT price FROM price_h WHERE id = Product.price_h_id limit 1),
            IF((SELECT price FROM price_h WHERE id = Product.price_h_id limit 1)<100),
                  100,
                  (SELECT price FROM price_h WHERE id = Product.price_h_id limit 1),
            IF(Product.f_price < 100),
                  100,
                  Product.f_price,
                )
    
```

上記のような形になると思いますが、どのような記述になりますか？  
MySQLのバージョンは5.6です。
CC BY-SA 3.0
2016-02-02T01:28:53.003
21597
2016-02-02T08:15:23.687
10980
question
mysql sql
sql内でIF文を２つ使いたい
質問を整理すると、こんな感じでしょうか。間違っていたらご指摘ください。

  1. price_hテーブルにproductが存在すればpriceを出力、しないならProduct.f_priceを出力
  2. この出力が<100なら100、そうでないなら、その値を出力

1についてはCOALESCEを使えば、NULLでない最初の値が出力されます。IFNULL()を使っても書けます。

```

    SELECT COALESCE(price_h.price, Product.f_price) 
    FROM price_h LEFT JOIN Product ON price_h.id = Product.price_h_id
    
```

2についてはpriceが<100なら100,それ以上ならpriceをそのまま出すには

```

    SELECT  IF(price < 100, 100, price)
    FROM price_h
    
```

組み合わせれば

```

    SELECT IF(COALESCE(price_h.price, Product.f_price) < 100,
              100, 
              COALESCE(price_h.price, Product.f_price))
    FROM price_h LEFT JOIN Product ON price_h.id = Product.price_h_id
    
```
CC BY-SA 3.0
2016-02-02T05:45:04.710
21611
2016-02-02T08:15:23.687
2016-02-02T08:15:23.687
7837
7837
21597
answer