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, 
    636, 
    637, 
    972, 
    973, 
    974, 
    975, 
    941, 
    942, 
    943, 
    944, 
    945, 
    946, 
    948, 
    949, 
    953, 
    954, 
    955, 
    699, 
    700, 
    701, 
    702, 
    774, 
    775, 
    776, 
    777, 
    778, 
    779, 
    780, 
    781, 
    782, 
    783, 
    784, 
    785, 
    786, 
    787, 
    788, 
    789, 
    790, 
    791, 
    792, 
    793, 
    794, 
    795, 
    678, 
    679, 
    680, 
    564, 
    565, 
    566, 
    567, 
    568, 
    569, 
    570, 
    571, 
    572, 
    573, 
    574, 
    575, 
    576, 
    577, 
    578, 
    579, 
    580, 
    581, 
    582, 
    583, 
    584, 
    585, 
    586, 
    592, 
    593, 
    827, 
    828, 
    829, 
    830, 
    831, 
    832, 
    833, 
    834, 
    835, 
    837, 
    838, 
    839, 
    840, 
    841, 
    842, 
    843, 
    844, 
    845, 
    846, 
    847, 
    848, 
    849, 
    850, 
    851, 
    852, 
    853, 
    854, 
    855, 
    856, 
    857, 
    858, 
    859, 
    860, 
    861, 
    862, 
    863, 
    864, 
    865, 
    866, 
    867, 
    868, 
    869, 
    870, 
    871, 
    872, 
    873, 
    874, 
    875, 
    876, 
    877, 
    878, 
    811, 
    812, 
    815, 
    816, 
    817, 
    818, 
    1025, 
    1026, 
    1027
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00231

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "122.50"
    },
    "grouping_operation": {
      "using_temporary_table": true,
      "using_filesort": true,
      "cost_info": {
        "sort_cost": "18.41"
      },
      "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": 18,
            "filtered": "30.68",
            "index_condition": "(`cscart`.`cscart_products_categories`.`product_id` in (969,970,636,637,972,973,974,975,941,942,943,944,945,946,948,949,953,954,955,699,700,701,702,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,678,679,680,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,592,593,827,828,829,830,831,832,833,834,835,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,811,812,815,816,817,818,1025,1026,1027))",
            "cost_info": {
              "read_cost": "61.60",
              "eval_cost": "3.68",
              "prefix_cost": "104.09",
              "data_read_per_join": "294"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ]
          }
        }
      ]
    }
  }
}

Result

product_id category_ids
564 389,300M
565 389,300M
566 300M,389
567 389,300M
568 388,300M
569 388,300M
570 388,300M
571 388,300M
572 300M,388
573 388,300M,403
574 388,300M,403
575 388,300M,403
576 388,300M,403
577 403,388,300M
578 389,403,300M
579 300M,389,403
580 300M,389,403
581 300M,389,403
582 300M,389,403
583 403,300M,388
584 388,403,300M
585 300M,388,403
586 300M,388,403
592 301M,374,366
593 301M,374,366
636 310,350,309M
637 309M,310,350
678 315,317,303M
679 315,317,303M
680 315,317,303M
699 298,404,405M
700 298,404,405M
701 298,404,405M
702 405M,298,404
774 405M,298,404
775 405M,298,404
776 298,404,405M
777 298,404,405M
778 298,404,405M
779 405M,298,404
780 405M,298,404
781 405M,298,404
782 404,405M,298
783 298,404,405M
784 298,404,405M
785 299,298,391M
786 299,298,391M
787 299,298,391M
788 391M,299,298
789 298,391M,299
790 298,391M,299
791 299,298,391M
792 299,298,391M
793 299,298,391M
794 391M,299,298
795 298,391M,299
811 392,397M,394
812 397M,394,392
815 394,392,416M
816 416M,394,392
817 392,416M,394
818 392,416M,394
827 302,301,367M
828 367M,302,301
829 301,367M,302
830 302,301,367M
831 302,301,367M
832 366,301,374M
833 374M,366,301
834 373M,301,372
835 372,373M,301
837 301,368M,302
838 301,368M,302
839 301,368M,302
840 301,368M,302
841 302,301,368M
842 368M,302,301
843 301,368M,302
844 301,368M,302
845 301,368M,302
846 301,368M,302
847 302,301,368M
848 368M,302,301
849 368M,302,301
850 301,368M,302
851 301,368M,302
852 301,369M,302
853 301,369M,302
854 369M,302,301
855 369M,302,301
856 301,369M,302
857 301,369M,302
858 301,369M,302
859 301,369M,302
860 302,301,369M
861 369M,302,301
862 301,369M,302
863 301,369M,302
864 301,369M,302
865 301,369M,302
866 301,369M,302
867 369M,302,301
868 369M,302,301
869 301,369M,302
870 301,369M,302
871 301,369M,302
872 301,369M,302
873 302,370M,301
874 302,370M,301
875 301,302,369M
876 369M,301,302
877 369M,301,302
878 369M,301,302
941 336M,333,334
942 334,336M,333
943 334,336M,333
944 334,336M,333
945 333,334,336M
946 333,334,336M
948 337M,333,334
949 337M,333,334
953 334,339M,333
954 334,339M,333
955 334,339M,333
969 309,310,349M
970 309,310,349M
972 309,350M,310
973 309,350M,310
974 350M,310,309
975 309,350M,310
1025 401M,399,400
1026 401M,399,400
1027 401M,399,400