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 = 7336 
WHERE 
  cscart_products_categories.product_id IN (
    96626, 96627, 96628, 96629, 96668, 96669, 
    96670, 96671, 96672, 96673, 96674, 
    96675, 96676, 96680, 96681, 96682, 
    96683, 96686, 96687, 96688, 96689, 
    96690, 96691, 96692, 96698, 96699, 
    96700, 96701, 96702, 96703
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.01175

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "75.89"
    },
    "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": 84,
            "rows_produced_per_join": 84,
            "filtered": "100.00",
            "using_index": true,
            "cost_info": {
              "read_cost": "8.69",
              "eval_cost": "8.40",
              "prefix_cost": "17.09",
              "data_read_per_join": "1K"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ],
            "attached_condition": "(`nuie_scalesta_net`.`cscart_products_categories`.`product_id` in (96626,96627,96628,96629,96668,96669,96670,96671,96672,96673,96674,96675,96676,96680,96681,96682,96683,96686,96687,96688,96689,96690,96691,96692,96698,96699,96700,96701,96702,96703))"
          }
        },
        {
          "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": 84,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "21.00",
              "eval_cost": "8.40",
              "prefix_cost": "46.49",
              "data_read_per_join": "1K"
            },
            "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": 4,
            "filtered": "5.00",
            "cost_info": {
              "read_cost": "21.00",
              "eval_cost": "0.42",
              "prefix_cost": "75.89",
              "data_read_per_join": "10K"
            },
            "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
96626 7338,7219M,7313
96627 7219M,7338,7313
96628 7219M,7338,7313
96629 7338,7313,7219M
96668 7219M,7338,7313
96669 7219M,7313,7338
96670 7313,7338,7219M
96671 7313,7338,7219M
96672 7338,7313,7219M
96673 7313,7219M,7338
96674 7219M,7313,7338
96675 7219M,7313,7338
96676 7219M,7313,7338
96680 7313,7338,7219M
96681 7219M,7313,7338
96682 7219M,7313,7338
96683 7313,7219M,7338
96686 7313,7219M,7338
96687 7338,7313,7219M
96688 7219M,7338,7313
96689 7219M,7338,7313
96690 7313,7219M,7338
96691 7313,7219M,7338
96692 7219M,7313,7338
96698 7339,7329M
96699 7329M,7339
96700 7329M,7339
96701 7339,7329M
96702 7339,7329M
96703 7329M,7339