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

hvordan sammenligner jeg to rækker og gemmer lighederne mellem de to rækker i en anden kolonne

Jeg har gjort noget lignende ved at behandle kommaseparerede lister over ID'er for at efterligne bitmasker. Tricket er at lave en join ved at bruge '%,id,% (hvor id er nøglen i en tabel indekseret med id). I dit tilfælde forbinder jeg tabel_1 til en tabel med sekvenserede heltal, og resultatet inkluderer en række for hvert id i din produkt_id-kolonne.

Jeg gør dette én gang for hvert id, du anmoder om, og slutter mig til de resulterende afledte tabeller for at finde de almindelige.

Her er forespørgslen:

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. Dynamisk SQL (oversætter tabelnavn som parameter)

  2. PostgreSQL Tutorial for begyndere – Alt du behøver at vide om PostgreSQL

  3. Stor PHP Arrays paginering

  4. Hvordan søger man efter skråstreg (\) i MySQL? og hvorfor escape (\) ikke påkrævet for hvor (=), men for Like er påkrævet?