Mysql
 sql >> Database >  >> RDS >> Mysql

come faccio a confrontare due righe e memorizzare le somiglianze delle due righe in un'altra colonna

Ho fatto qualcosa di simile trattando elenchi di ID separati da virgole per emulare maschere di bit. Il trucco è fare un join usando come '%,id,% (dove id è la chiave in una tabella indicizzata da id). Per il tuo caso, unisco table_1 a una tabella di interi sequenziati e il risultato include una riga per ogni ID nella colonna product_id.

Lo faccio una volta per ogni ID che stai richiedendo e unisco le tabelle derivate risultanti per trovare quelle comuni.

Ecco la domanda:

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