Mysql
 sql >> Baza danych >  >> RDS >> Mysql

jak porównać dwa wiersze i zapisać podobieństwa dwóch wierszy w innej kolumnie?

Zrobiłem coś podobnego, traktując listy oddzielonych przecinkami identyfikatorów, aby emulować maski bitowe. Sztuczka polega na wykonaniu sprzężenia za pomocą '%,id,% (gdzie id jest kluczem w tabeli indeksowanej przez id). W Twoim przypadku łączę table_1 z tabelą sekwencyjnych liczb całkowitych, a wynik zawiera wiersz dla każdego identyfikatora w kolumnie product_id.

Robię to raz dla każdego identyfikatora, o który prosisz, i dołączam do wynikowych tabel pochodnych, aby znaleźć te wspólne.

Oto zapytanie:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak za pomocą MySQL wybrać pozycję wyniku zapytania w jednym konkretnym wierszu?

  2. Jak przekonwertować to z TSQL na MYSQL?

  3. USUŃ wszystkie zduplikowane tematy z kilkoma warunkami

  4. Dynamiczne połączenie z bazą danych Codeiniter

  5. Hooki nie wyzwalają się podczas wstawiania nieprzetworzonych zapytań przez sequelize.query()