SELECT 
  q_products_categories.product_id, 
  GROUP_CONCAT(
    IF(
      q_products_categories.link_type = "M", 
      CONCAT(
        q_products_categories.category_id, 
        "M"
      ), 
      q_products_categories.category_id
    )
  ) AS category_ids, 
  product_position_source.position AS position 
FROM 
  q_products_categories 
  INNER JOIN q_categories ON q_categories.category_id = q_products_categories.category_id 
  AND (
    q_categories.usergroup_ids = '' 
    OR FIND_IN_SET(0, q_categories.usergroup_ids) 
    OR FIND_IN_SET(1, q_categories.usergroup_ids)
  ) 
  AND q_categories.status IN ('A', 'H') 
  LEFT JOIN q_products_categories AS product_position_source ON q_products_categories.product_id = product_position_source.product_id 
  AND product_position_source.category_id = 3 
WHERE 
  q_products_categories.product_id IN (
    37523, 37524, 37525, 37526, 37527, 37528, 
    37529, 37530, 37531, 37532, 37533, 
    37534, 37535, 37536, 37537, 37538, 
    37539, 37540, 37541, 37542, 37543, 
    37544, 37545, 37546, 37547, 37548, 
    37549, 37550, 37551, 37552
  ) 
GROUP BY 
  q_products_categories.product_id

Query time 0.00112

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "250.41"
    },
    "grouping_operation": {
      "using_filesort": false,
      "nested_loop": [
        {
          "table": {
            "table_name": "q_products_categories",
            "access_type": "range",
            "possible_keys": [
              "PRIMARY",
              "pt"
            ],
            "key": "pt",
            "used_key_parts": [
              "product_id"
            ],
            "key_length": "3",
            "rows_examined_per_scan": 58,
            "rows_produced_per_join": 58,
            "filtered": "100.00",
            "index_condition": "(`portal`.`q_products_categories`.`product_id` in (37523,37524,37525,37526,37527,37528,37529,37530,37531,37532,37533,37534,37535,37536,37537,37538,37539,37540,37541,37542,37543,37544,37545,37546,37547,37548,37549,37550,37551,37552))",
            "cost_info": {
              "read_cost": "99.61",
              "eval_cost": "11.60",
              "prefix_cost": "111.21",
              "data_read_per_join": "928"
            },
            "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",
              "portal.q_products_categories.product_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 58,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "58.00",
              "eval_cost": "11.60",
              "prefix_cost": "180.81",
              "data_read_per_join": "928"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "position"
            ]
          }
        },
        {
          "table": {
            "table_name": "q_categories",
            "access_type": "eq_ref",
            "possible_keys": [
              "PRIMARY",
              "c_status",
              "p_category_id"
            ],
            "key": "PRIMARY",
            "used_key_parts": [
              "category_id"
            ],
            "key_length": "3",
            "ref": [
              "portal.q_products_categories.category_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 11,
            "filtered": "20.00",
            "cost_info": {
              "read_cost": "58.00",
              "eval_cost": "2.32",
              "prefix_cost": "250.41",
              "data_read_per_join": "30K"
            },
            "used_columns": [
              "category_id",
              "usergroup_ids",
              "status"
            ],
            "attached_condition": "(((`portal`.`q_categories`.`usergroup_ids` = '') or find_in_set(0,`portal`.`q_categories`.`usergroup_ids`) or find_in_set(1,`portal`.`q_categories`.`usergroup_ids`)) and (`portal`.`q_categories`.`status` in ('A','H')))"
          }
        }
      ]
    }
  }
}

Result

product_id category_ids position
37523 4M
37524 5M
37525 4M
37526 5M
37527 39M
37528 39M
37529 5M
37530 39M
37531 4M
37532 39M
37533 4M
37534 39M
37535 39M
37536 39M
37537 39M
37538 4M
37539 4M
37540 4M
37541 4M
37542 4M
37543 4M
37544 39M
37545 5M
37546 4M
37547 4M
37548 39M
37549 5M
37550 39M
37551 4M
37552 39M