SELECT 
  cscart_products_categories.product_id, 
  GROUP_CONCAT(
    IF(
      cscart_products_categories.link_type = "M", 
      CONCAT(
        cscart_products_categories.category_id, 
        "M"
      ), 
      cscart_products_categories.category_id
    )
  ) AS category_ids, 
  product_position_source.position AS position 
FROM 
  cscart_products_categories 
  INNER JOIN cscart_categories ON cscart_categories.category_id = cscart_products_categories.category_id 
  AND cscart_categories.storefront_id IN (0, 1) 
  AND (
    cscart_categories.usergroup_ids = '' 
    OR FIND_IN_SET(
      0, cscart_categories.usergroup_ids
    ) 
    OR FIND_IN_SET(
      1, cscart_categories.usergroup_ids
    )
  ) 
  AND cscart_categories.status IN ('A', 'H') 
  LEFT JOIN cscart_products_categories AS product_position_source ON cscart_products_categories.product_id = product_position_source.product_id 
  AND product_position_source.category_id = 7251 
WHERE 
  cscart_products_categories.product_id IN (
    87827, 87840, 87833, 87846, 87838, 87856, 
    87854, 87834, 87852, 93787, 93788, 
    94367, 94368, 94369, 94370, 94371, 
    94372, 94373, 94374, 94375, 94376, 
    94377, 94378, 94379, 95399, 95400, 
    95401, 95434, 95435, 95436
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00070

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "47.08"
    },
    "grouping_operation": {
      "using_filesort": false,
      "nested_loop": [
        {
          "table": {
            "table_name": "cscart_products_categories",
            "access_type": "range",
            "possible_keys": [
              "PRIMARY",
              "link_type",
              "pt"
            ],
            "key": "pt",
            "used_key_parts": [
              "product_id"
            ],
            "key_length": "3",
            "rows_examined_per_scan": 52,
            "rows_produced_per_join": 52,
            "filtered": "100.00",
            "using_index": true,
            "cost_info": {
              "read_cost": "5.48",
              "eval_cost": "5.20",
              "prefix_cost": "10.68",
              "data_read_per_join": "832"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ],
            "attached_condition": "(`nuie_scalesta_net`.`cscart_products_categories`.`product_id` in (87827,87840,87833,87846,87838,87856,87854,87834,87852,93787,93788,94367,94368,94369,94370,94371,94372,94373,94374,94375,94376,94377,94378,94379,95399,95400,95401,95434,95435,95436))"
          }
        },
        {
          "table": {
            "table_name": "product_position_source",
            "access_type": "eq_ref",
            "possible_keys": [
              "PRIMARY",
              "pt"
            ],
            "key": "PRIMARY",
            "used_key_parts": [
              "category_id",
              "product_id"
            ],
            "key_length": "6",
            "ref": [
              "const",
              "nuie_scalesta_net.cscart_products_categories.product_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 52,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "13.00",
              "eval_cost": "5.20",
              "prefix_cost": "28.88",
              "data_read_per_join": "832"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "position"
            ]
          }
        },
        {
          "table": {
            "table_name": "cscart_categories",
            "access_type": "eq_ref",
            "possible_keys": [
              "PRIMARY",
              "c_status",
              "p_category_id"
            ],
            "key": "PRIMARY",
            "used_key_parts": [
              "category_id"
            ],
            "key_length": "3",
            "ref": [
              "nuie_scalesta_net.cscart_products_categories.category_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 2,
            "filtered": "5.00",
            "cost_info": {
              "read_cost": "13.00",
              "eval_cost": "0.26",
              "prefix_cost": "47.08",
              "data_read_per_join": "6K"
            },
            "used_columns": [
              "category_id",
              "usergroup_ids",
              "status",
              "storefront_id"
            ],
            "attached_condition": "((`nuie_scalesta_net`.`cscart_categories`.`storefront_id` in (0,1)) and ((`nuie_scalesta_net`.`cscart_categories`.`usergroup_ids` = '') or (0 <> find_in_set(0,`nuie_scalesta_net`.`cscart_categories`.`usergroup_ids`)) or (0 <> find_in_set(1,`nuie_scalesta_net`.`cscart_categories`.`usergroup_ids`))) and (`nuie_scalesta_net`.`cscart_categories`.`status` in ('A','H')))"
          }
        }
      ]
    }
  }
}

Result

product_id category_ids position
87827 7252M
87833 7331,7253M
87834 7331,7253M
87838 7331,7253M
87840 7331,7253M
87846 7252M
87852 7331,7253M
87854 7331,7253M
87856 7331,7253M
93787 7331,7253M
93788 7252M
94367 7252M
94368 7252M
94369 7252M
94370 7252M
94371 7252M
94372 7331,7253M
94373 7331,7253M
94374 7331,7253M
94375 7331,7253M
94376 7331,7253M
94377 7331,7253M
94378 7331,7253M
94379 7331,7253M
95399 7331,7253M
95400 7331,7253M
95401 7331,7253M
95434 7331,7253M
95435 7331,7253M
95436 7331,7253M