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, 
    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.00158

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "122.63"
    },
    "grouping_operation": {
      "using_temporary_table": true,
      "using_filesort": true,
      "cost_info": {
        "sort_cost": "16.91"
      },
      "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": 16,
            "filtered": "27.96",
            "index_condition": "(`cscart`.`cscart_products_categories`.`product_id` in (969,970,636,637,972,973,974,975,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": "62.90",
              "eval_cost": "3.38",
              "prefix_cost": "105.72",
              "data_read_per_join": "270"
            },
            "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 388,300M
570 388,300M
571 388,300M
572 388,300M
573 403,388,300M
574 300M,403,388
575 388,300M,403
576 388,300M,403
577 388,300M,403
578 300M,389,403
579 403,300M,389
580 389,403,300M
581 300M,389,403
582 300M,389,403
583 300M,388,403
584 300M,388,403
585 300M,388,403
586 388,403,300M
592 301M,374,366
593 301M,374,366
636 310,350,309M
637 310,350,309M
678 317,303M,315
679 317,303M,315
680 317,303M,315
699 298,405M,404
700 298,405M,404
701 404,298,405M
702 404,298,405M
774 404,298,405M
775 405M,404,298
776 298,405M,404
777 298,405M,404
778 404,298,405M
779 404,298,405M
780 404,298,405M
781 404,298,405M
782 298,405M,404
783 298,405M,404
784 404,298,405M
785 391M,298,299
786 391M,298,299
787 299,391M,298
788 298,299,391M
789 298,299,391M
790 391M,298,299
791 391M,298,299
792 391M,298,299
793 391M,298,299
794 299,391M,298
795 298,299,391M
811 392,397M,394
812 392,397M,394
815 392,416M,394
816 394,392,416M
817 394,392,416M
818 416M,394,392
827 302,301,367M
828 302,301,367M
829 302,301,367M
830 367M,302,301
831 367M,302,301
832 301,374M,366
833 301,374M,366
834 301,372,373M
835 373M,301,372
837 368M,302,301
838 368M,302,301
839 301,368M,302
840 301,368M,302
841 301,368M,302
842 301,368M,302
843 302,301,368M
844 368M,302,301
845 301,368M,302
846 301,368M,302
847 301,368M,302
848 301,368M,302
849 301,368M,302
850 368M,302,301
851 368M,302,301
852 301,369M,302
853 301,369M,302
854 301,369M,302
855 301,369M,302
856 302,301,369M
857 369M,302,301
858 301,369M,302
859 301,369M,302
860 301,369M,302
861 301,369M,302
862 302,301,369M
863 369M,302,301
864 369M,302,301
865 301,369M,302
866 301,369M,302
867 301,369M,302
868 301,369M,302
869 369M,302,301
870 369M,302,301
871 301,369M,302
872 301,369M,302
873 370M,301,302
874 370M,301,302
875 302,369M,301
876 302,369M,301
877 301,302,369M
878 369M,301,302
969 309,310,349M
970 309,310,349M
972 309,350M,310
973 309,350M,310
974 309,350M,310
975 350M,310,309
1025 400,401M,399
1026 399,400,401M
1027 401M,399,400