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, 
  product_position_source.position AS position 
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') 
  LEFT JOIN cscart_products_categories AS product_position_source ON cscart_products_categories.product_id = product_position_source.product_id 
  AND product_position_source.category_id = 280 
WHERE 
  cscart_products_categories.product_id IN (
    12684, 12714, 13260, 13267, 12349, 12364, 
    12259, 12504, 12524, 12379, 6843, 6840, 
    6841, 6846, 13274, 13286, 13280, 13292, 
    6962, 6966, 6967, 6965, 6963, 6952
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00200

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "60.71"
    },
    "grouping_operation": {
      "using_temporary_table": true,
      "using_filesort": true,
      "cost_info": {
        "sort_cost": "7.73"
      },
      "nested_loop": [
        {
          "table": {
            "table_name": "cscart_categories",
            "access_type": "ALL",
            "possible_keys": [
              "PRIMARY",
              "c_status",
              "p_category_id"
            ],
            "rows_examined_per_scan": 46,
            "rows_produced_per_join": 1,
            "filtered": "4.00",
            "cost_info": {
              "read_cost": "5.15",
              "eval_cost": "0.18",
              "prefix_cost": "5.33",
              "data_read_per_join": "7K"
            },
            "used_columns": [
              "category_id",
              "storefront_id",
              "usergroup_ids",
              "status"
            ],
            "attached_condition": "((`test2_gaseus`.`cscart_categories`.`storefront_id` in (0,1)) and ((`test2_gaseus`.`cscart_categories`.`usergroup_ids` = '') or (0 <> find_in_set(0,`test2_gaseus`.`cscart_categories`.`usergroup_ids`)) or (0 <> find_in_set(1,`test2_gaseus`.`cscart_categories`.`usergroup_ids`))) and (`test2_gaseus`.`cscart_categories`.`status` in ('A','H')))"
          }
        },
        {
          "table": {
            "table_name": "cscart_products_categories",
            "access_type": "range",
            "possible_keys": [
              "PRIMARY",
              "pt"
            ],
            "key": "pt",
            "used_key_parts": [
              "product_id"
            ],
            "key_length": "3",
            "rows_examined_per_scan": 42,
            "rows_produced_per_join": 7,
            "filtered": "10.00",
            "index_condition": "(`test2_gaseus`.`cscart_products_categories`.`product_id` in (12684,12714,13260,13267,12349,12364,12259,12504,12524,12379,6843,6840,6841,6846,13274,13286,13280,13292,6962,6966,6967,6965,6963,6952))",
            "using_join_buffer": "hash join",
            "cost_info": {
              "read_cost": "38.11",
              "eval_cost": "0.77",
              "prefix_cost": "51.17",
              "data_read_per_join": "123"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ],
            "attached_condition": "(`test2_gaseus`.`cscart_products_categories`.`category_id` = `test2_gaseus`.`cscart_categories`.`category_id`)"
          }
        },
        {
          "table": {
            "table_name": "product_position_source",
            "access_type": "eq_ref",
            "possible_keys": [
              "PRIMARY",
              "pt"
            ],
            "key": "PRIMARY",
            "used_key_parts": [
              "category_id",
              "product_id"
            ],
            "key_length": "6",
            "ref": [
              "const",
              "test2_gaseus.cscart_products_categories.product_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 7,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "1.05",
              "eval_cost": "0.77",
              "prefix_cost": "52.99",
              "data_read_per_join": "123"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "position"
            ]
          }
        }
      ]
    }
  }
}

Result

product_id category_ids position
6840 287M
6841 287M
6843 287M
6846 287M
6952 267,282,301M
6962 283,267,282M
6963 267,283,282M
6965 283,267,282M
6966 282M,283,267
6967 267,283,282M
12259 306M
12349 306M
12364 306M
12379 318M
12504 306M
12524 306M
12684 283M
12714 283M
13260 283M
13267 283M
13274 288M
13280 288M
13286 288M
13292 288M