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, 
    945, 
    946, 
    953, 
    954, 
    955, 
    956, 
    957, 
    958, 
    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.00170

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "122.11"
    },
    "grouping_operation": {
      "using_temporary_table": true,
      "using_filesort": true,
      "cost_info": {
        "sort_cost": "18.02"
      },
      "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.03",
            "index_condition": "(`cscart`.`cscart_products_categories`.`product_id` in (969,970,636,637,972,973,974,975,945,946,953,954,955,956,957,958,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.60",
              "prefix_cost": "104.09",
              "data_read_per_join": "288"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ]
          }
        }
      ]
    }
  }
}

Result

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