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.00159

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