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 = 7148 
WHERE 
  cscart_products_categories.product_id IN (
    96636, 96637, 96638, 96639, 96640, 96641, 
    96642, 96643, 96644, 96645, 96646, 
    96647, 96648, 96649, 96650, 96651, 
    96652, 96653, 96654, 96655, 96656, 
    96657, 96658, 96659, 96660, 96661, 
    96662, 96663, 96664, 96665, 96666, 
    96667, 96668, 96669, 96670, 96671, 
    96672, 96673, 96674, 96675, 96676, 
    96678, 96680, 96681, 96682, 96683, 
    96686, 96687
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00162

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "46.26"
    },
    "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": 81,
            "rows_produced_per_join": 81,
            "filtered": "100.00",
            "using_index": true,
            "cost_info": {
              "read_cost": "8.39",
              "eval_cost": "8.10",
              "prefix_cost": "16.49",
              "data_read_per_join": "1K"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ],
            "attached_condition": "(`nuie_scalesta_net`.`cscart_products_categories`.`product_id` in (96636,96637,96638,96639,96640,96641,96642,96643,96644,96645,96646,96647,96648,96649,96650,96651,96652,96653,96654,96655,96656,96657,96658,96659,96660,96661,96662,96663,96664,96665,96666,96667,96668,96669,96670,96671,96672,96673,96674,96675,96676,96678,96680,96681,96682,96683,96686,96687))"
          }
        },
        {
          "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": "20.25",
              "eval_cost": "0.41",
              "prefix_cost": "44.84",
              "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')))"
          }
        },
        {
          "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": 4,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "1.01",
              "eval_cost": "0.41",
              "prefix_cost": "46.26",
              "data_read_per_join": "64"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "position"
            ]
          }
        }
      ]
    }
  }
}

Result

product_id category_ids position
96636 7263M
96637 7263M
96638 7263M
96639 7263M
96640 7263M
96641 7263M
96642 7263M
96643 7263M
96644 7263M
96645 7263M
96646 7263M
96647 7263M
96648 7263M
96649 7263M
96650 7263M
96651 7263M
96652 7263M
96653 7263M
96654 7263M
96655 7263M
96656 7263M
96657 7263M
96658 7263M
96659 7263M
96660 7263M
96661 7263M
96662 7263M
96663 7263M
96664 7263M
96665 7263M
96666 7263M
96667 7263M
96668 7313,7338,7219M
96669 7313,7338,7219M
96670 7313,7338,7219M
96671 7313,7338,7219M
96672 7313,7338,7219M
96673 7313,7338,7219M
96674 7313,7338,7219M
96675 7313,7338,7219M
96676 7313,7338,7219M
96678 7341,7342,7343,7157M
96680 7313,7338,7219M
96681 7313,7338,7219M
96682 7313,7338,7219M
96683 7313,7338,7219M
96686 7313,7338,7219M
96687 7313,7338,7219M