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

Zapytanie MySQL, aby znaleźć najbardziej podobny wiersz liczbowy

W niewielkim udoskonaleniu metody @eggyal uwzględniłem liczbę elementów, z którymi jesteśmy w stanie dopasować.

SELECT   u2.user_id

-- join our user to their scores
FROM     (users u1 JOIN scores s1 USING (user_id))

-- and then join other users and their scores
    JOIN (users u2 JOIN scores s2 USING (user_id))
      ON s1.item_id  = s2.item_id
     AND u1.user_id != u2.user_id

-- filter for our user of interest
WHERE    u1.user_id = ?

-- group other users' scores together
GROUP BY u2.user_id

-- subtract the degree of difference in correlating scores from the number of correlating scores
ORDER BY (SUM(s1.item_id = s2.item_id) - 
  ( SUM(ABS(s2.score - s1.score) + ABS(u2.self - u1.self) ) ) ) DESC


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. porównywanie daty i czasu php

  2. Jak zaokrąglić czas do najbliższego 15-minutowego segmentu

  3. Wyodrębnij krotki z określonymi wspólnymi wartościami w innej kolumnie w SQL

  4. przygotowana instrukcja, w której wartość jest w tablicy

  5. Komendy MySqli nie są zsynchronizowane; nie możesz teraz uruchomić tego polecenia