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 (
    592, 593, 831, 830, 829, 828, 827, 835, 
    834, 841, 840, 839, 838, 837, 846, 845, 
    844, 843, 842, 851, 850, 849, 848, 847, 
    858, 857, 856, 855, 854, 863, 862, 861, 
    860, 859, 872, 871, 870, 869, 868
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00149

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "109.64"
    },
    "grouping_operation": {
      "using_temporary_table": true,
      "using_filesort": true,
      "cost_info": {
        "sort_cost": "5.55"
      },
      "nested_loop": [
        {
          "table": {
            "table_name": "cscart_categories",
            "access_type": "ALL",
            "possible_keys": [
              "PRIMARY",
              "c_status",
              "p_category_id"
            ],
            "rows_examined_per_scan": 125,
            "rows_produced_per_join": 5,
            "filtered": "4.00",
            "cost_info": {
              "read_cost": "29.49",
              "eval_cost": "1.00",
              "prefix_cost": "30.49",
              "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": 5,
            "filtered": "9.25",
            "index_condition": "(`cscart`.`cscart_products_categories`.`product_id` in (592,593,831,830,829,828,827,835,834,841,840,839,838,837,846,845,844,843,842,851,850,849,848,847,858,857,856,855,854,863,862,861,860,859,872,871,870,869,868))",
            "cost_info": {
              "read_cost": "61.60",
              "eval_cost": "1.11",
              "prefix_cost": "104.09",
              "data_read_per_join": "88"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ]
          }
        }
      ]
    }
  }
}

Result

product_id category_ids
592 374,301M,366
593 374,301M,366
827 302,301,367M
828 302,301,367M
829 367M,302,301
830 367M,302,301
831 301,367M,302
834 301,372,373M
835 373M,301,372
837 302,301,368M
838 368M,302,301
839 368M,302,301
840 301,368M,302
841 301,368M,302
842 301,368M,302
843 302,301,368M
844 302,301,368M
845 368M,302,301
846 301,368M,302
847 301,368M,302
848 301,368M,302
849 301,368M,302
850 302,301,368M
851 368M,302,301
854 369M,302,301
855 301,369M,302
856 301,369M,302
857 301,369M,302
858 302,301,369M
859 302,301,369M
860 369M,302,301
861 301,369M,302
862 301,369M,302
863 301,369M,302
868 301,369M,302
869 302,301,369M
870 369M,302,301
871 369M,302,301
872 301,369M,302