Ik heb iets soortgelijks gedaan door door komma's gescheiden lijsten met ID's te behandelen om bitmaskers te emuleren. De truc is om een join te doen met '%,id,% (waarbij id de sleutel is in een tabel die is geïndexeerd door id). Voor jouw geval voeg ik table_1 toe aan een tabel met opeenvolgende gehele getallen en het resultaat bevat een rij voor elke id in je product_id-kolom.
Ik doe dit één keer voor elke id die je aanvraagt en voeg de resulterende afgeleide tabellen samen om de algemene te vinden.
Hier is de vraag:
SELECT p1.id, p1.name name1,p2.name name2, GROUP_CONCAT(p1.N) similarities
FROM (
SELECT *
FROM table_1 t1
JOIN sequence8 s8 on CONCAT(',',t1.product_ids,',') LIKE CONCAT('%,',s8.N,',%')
WHERE t1.id =1
) p1
JOIN
(
SELECT *
FROM table_1 t1
JOIN sequence8 s8 ON CONCAT(',',t1.product_ids,',') LIKE CONCAT('%,',s8.N,',%')
WHERE t1.id =4
) p2 ON p2.n = p1.n
GROUP BY p1.id