GROUP BY product_id
SELECT
COUNT(*)
FROM
products_categories pc
INNER JOIN
categories c ON c.id = pc.category_id AND c.parentId=1
GROUP BY
product_id
INSERT INTO
{{table}}
(id, field1, field2)
VALUES
(1, "значение1.1", "значение1.2"),
(2, "значение2.1", "значение2.2"),
(3, "значение3.1", "значение3.2"),
(4, "значение4.1", "значение4.2"),
(5, "значение5.1", "значение5.2")
ON DUPLICATE KEY UPDATE
field1 = VALUES(field1), field2 = VALUES(field2)
Однако следует учесть количество данных в полях, при 10000 записей текст запроса может превысить лимит, в этом случае либо увеличивать лимит, либо разбивать данные на несколько частей.
SELECT
name,
SUBSTRING(GROUP_CONCAT(CONCAT(value, ',', param1, ',', param2, ',', param3, ';') ORDER BY value DESC), 1, LOCATE(';', GROUP_CONCAT(CONCAT(value, ',', param1, ',', param2, ',', param3, ';') ORDER BY value DESC))) as value
FROM test
GROUP BY name
SELECT
name,
GROUP_CONCAT(CONCAT(value, ',', param1, ',', param2, ',', param3) ORDER BY value DESC SEPARATOR ';') as value
FROM test
GROUP BY name