SELECT 
  cscart_product_prices.product_id, 
  MIN(
    IF(
      cscart_product_prices.percentage_discount = 0, 
      cscart_product_prices.price, 
      cscart_product_prices.price - (
        cscart_product_prices.price * cscart_product_prices.percentage_discount
      )/ 100
    )
  ) AS price 
FROM 
  cscart_product_prices 
WHERE 
  cscart_product_prices.product_id IN (
    859, 860, 861, 862, 863, 864, 865, 866, 
    867, 868, 869, 870, 871, 872, 873, 874, 
    875, 876, 877, 878, 879, 880, 881, 882
  ) 
  AND cscart_product_prices.lower_limit = 1 
  AND cscart_product_prices.usergroup_id IN (0, 1) 
GROUP BY 
  cscart_product_prices.product_id

Query time 0.00128

JSON explain

{
  "query_block": {
    "select_id": 1,
    "table": {
      "table_name": "cscart_product_prices",
      "access_type": "range",
      "possible_keys": ["usergroup", "product_id", "lower_limit", "usergroup_id"],
      "key": "product_id",
      "key_length": "3",
      "used_key_parts": ["product_id"],
      "rows": 24,
      "filtered": 4.897957802,
      "index_condition": "cscart_product_prices.product_id in (859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882)",
      "attached_condition": "cscart_product_prices.lower_limit = 1 and cscart_product_prices.usergroup_id in (0,1)"
    }
  }
}

Result

product_id price
859 696000.00000000
860 42000.00000000
861 540000.00000000
862 576000.00000000
863 0.00000000
864 0.00000000
865 0.00000000
866 0.00000000
867 0.00000000
868 0.00000000
869 0.00000000
870 0.00000000
871 0.00000000
872 0.00000000
873 0.00000000
874 0.00000000
875 0.00000000
876 0.00000000
877 0.00000000
878 0.00000000
879 0.00000000
880 0.00000000
881 0.00000000
882 0.00000000