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 
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') 
WHERE 
  cscart_products_categories.product_id IN (
    969, 970, 1020, 1021, 632, 633, 1013, 
    1014, 1016, 1017, 1108, 1152, 1162, 
    1163, 613, 614, 615, 616, 617, 618, 619, 
    620, 622, 636, 637, 638, 639, 972, 973, 
    974, 975, 980, 981, 982, 983, 984, 985, 
    986, 987, 988, 990, 991, 992, 993, 994, 
    995, 996, 997, 998, 999, 1000, 1001, 
    1002, 1003, 1004, 1005, 1006, 1007, 
    1008, 1009, 1010, 1011, 1030, 621, 1029, 
    1157, 1164
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00192

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "116.19"
    },
    "grouping_operation": {
      "using_temporary_table": true,
      "using_filesort": true,
      "cost_info": {
        "sort_cost": "8.51"
      },
      "nested_loop": [
        {
          "table": {
            "table_name": "cscart_categories",
            "access_type": "ALL",
            "possible_keys": [
              "PRIMARY",
              "c_status",
              "p_category_id"
            ],
            "rows_examined_per_scan": 126,
            "rows_produced_per_join": 5,
            "filtered": "4.00",
            "cost_info": {
              "read_cost": "29.72",
              "eval_cost": "1.01",
              "prefix_cost": "30.73",
              "data_read_per_join": "20K"
            },
            "used_columns": [
              "category_id",
              "storefront_id",
              "usergroup_ids",
              "status"
            ],
            "attached_condition": "((`cscart`.`cscart_categories`.`storefront_id` in (0,1)) and ((`cscart`.`cscart_categories`.`usergroup_ids` = '') or find_in_set(0,`cscart`.`cscart_categories`.`usergroup_ids`) or find_in_set(1,`cscart`.`cscart_categories`.`usergroup_ids`)) and (`cscart`.`cscart_categories`.`status` in ('A','H')))"
          }
        },
        {
          "table": {
            "table_name": "cscart_products_categories",
            "access_type": "ref",
            "possible_keys": [
              "PRIMARY",
              "pt"
            ],
            "key": "PRIMARY",
            "used_key_parts": [
              "category_id"
            ],
            "key_length": "3",
            "ref": [
              "cscart.cscart_categories.category_id"
            ],
            "rows_examined_per_scan": 12,
            "rows_produced_per_join": 8,
            "filtered": "14.06",
            "index_condition": "(`cscart`.`cscart_products_categories`.`product_id` in (969,970,1020,1021,632,633,1013,1014,1016,1017,1108,1152,1162,1163,613,614,615,616,617,618,619,620,622,636,637,638,639,972,973,974,975,980,981,982,983,984,985,986,987,988,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1030,621,1029,1157,1164))",
            "cost_info": {
              "read_cost": "64.86",
              "eval_cost": "1.70",
              "prefix_cost": "107.69",
              "data_read_per_join": "136"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ]
          }
        }
      ]
    }
  }
}

Result

product_id category_ids
613 355,311,309M
614 355,311,309M
615 309M,355,311
616 309M,355,311
617 309M,355,311
618 311,309M,355
619 355,311,309M
620 355,311,309M
621 355,311M
622 309M,355,311
632 309M,345,359
633 309M,345,359
636 310,350,309M
637 310,350,309M
638 363,365,309M
639 309M,363,365
969 309,310,349M
970 309,310,349M
972 309,350M,310
973 309,350M,310
974 309,350M,310
975 310,309,350M
980 309,363,364M
981 309,363,364M
982 364M,309,363
983 363,364M,309
984 363,364M,309
985 363,364M,309
986 309,363,364M
987 309,363,364M
988 309,363,364M
990 364M,309,363
991 363,364M,309
992 363,365M,309
993 363,365M,309
994 365M,309,363
995 365M,309,363
996 365M,309,363
997 363,365M,309
998 363,365M,309
999 363,365M,309
1000 309,363,365M
1001 365M,309,363
1002 365M,309,363
1003 365M,309,363
1004 363,365M,309
1005 363,365M,309
1006 309,363,365M
1007 365M,309,363
1008 365M,309,363
1009 365M,309,363
1010 363,365M,309
1011 363,365M,309
1013 345,309,356M
1014 309,356M,345
1016 309,357M,345
1017 345,309,357M
1020 309,360,346M
1021 360,346M,309
1029 355,311M
1030 311,355,309M
1108 345M
1152 345M
1157 363M
1162 345M
1163 345M
1164 363M