sql >> Databasteknik >  >> RDS >> Mysql

hur jämför jag två rader och lagrar likheterna mellan de två raderna i en annan kolumn

Jag har gjort något liknande genom att behandla kommaseparerade listor med ID:n för att emulera bitmasker. Tricket är att göra en join genom att använda som '%,id,% (där id är nyckeln i en tabell indexerad med id). I ditt fall sammanfogar jag table_1 till en tabell med sekvenserade heltal och resultatet inkluderar en rad för varje id i din produkt_id-kolumn.

Jag gör detta en gång för varje id du begär och går med i de resulterande härledda tabellerna för att hitta de vanliga.

Här är frågan:

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



  1. Kontrollera om rad finns i databasen innan du infogar

  2. Säkerhetsstrategier inom datamodellering. Del 4

  3. Min app får åtkomst till en fjärrdatabas. Hur kör jag enhetstester effektivt?

  4. URL Skriva om frågedatabas?