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 = 2 
WHERE 
  cscart_products_categories.product_id IN (
    51480, 51479, 51494, 51495, 132, 112, 
    3, 78, 2, 77, 87, 66, 22421, 22424, 22290, 
    50981, 50982, 133, 45, 143, 50983, 51416, 
    51043, 51421, 51471, 51413, 51057, 
    51472, 51547, 51470, 51500, 51412
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00104

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "77.01"
    },
    "grouping_operation": {
      "using_filesort": false,
      "nested_loop": [
        {
          "table": {
            "table_name": "cscart_products_categories",
            "access_type": "range",
            "possible_keys": [
              "PRIMARY",
              "pt"
            ],
            "key": "pt",
            "used_key_parts": [
              "product_id"
            ],
            "key_length": "3",
            "rows_examined_per_scan": 60,
            "rows_produced_per_join": 60,
            "filtered": "100.00",
            "index_condition": "(`test_uchur_k`.`cscart_products_categories`.`product_id` in (51480,51479,51494,51495,132,112,3,78,2,77,87,66,22421,22424,22290,50981,50982,133,45,143,50983,51416,51043,51421,51471,51413,51057,51472,51547,51470,51500,51412))",
            "cost_info": {
              "read_cost": "29.01",
              "eval_cost": "6.00",
              "prefix_cost": "35.01",
              "data_read_per_join": "960"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ]
          }
        },
        {
          "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",
              "test_uchur_k.cscart_products_categories.product_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 60,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "15.00",
              "eval_cost": "6.00",
              "prefix_cost": "56.01",
              "data_read_per_join": "960"
            },
            "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": [
              "test_uchur_k.cscart_products_categories.category_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 3,
            "filtered": "5.00",
            "cost_info": {
              "read_cost": "15.00",
              "eval_cost": "0.30",
              "prefix_cost": "77.01",
              "data_read_per_join": "15K"
            },
            "used_columns": [
              "category_id",
              "storefront_id",
              "usergroup_ids",
              "status"
            ],
            "attached_condition": "((`test_uchur_k`.`cscart_categories`.`storefront_id` in (0,1)) and ((`test_uchur_k`.`cscart_categories`.`usergroup_ids` = '') or (0 <> find_in_set(0,`test_uchur_k`.`cscart_categories`.`usergroup_ids`)) or (0 <> find_in_set(1,`test_uchur_k`.`cscart_categories`.`usergroup_ids`))) and (`test_uchur_k`.`cscart_categories`.`status` in ('A','H')))"
          }
        }
      ]
    }
  }
}

Result

product_id category_ids position
2 4,42,40M
3 4,42,40M
45 45,21M
66 4,42,40M
77 21,40M
78 21,40M
87 21,40M
112 21,44,40M
132 42,35,40M
133 4,42,40M
143 45,39M
22290 133M
22421 40,133M
22424 40,133M
50981 133M
50982 133M
50983 40,133M
51043 231M
51057 231M
51412 133M
51413 133M
51416 133M
51421 133M
51470 3M
51471 117M
51472 117M
51479 42,40,4M
51480 42,40,4M
51494 42,40,204M
51495 204,42,40M
51500 83M
51547 81M