Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

दो परिणाम सेट के बीच समानता की तुलना करें

कुछ इस तरह:

SELECT first_user.id_user, second_user.id_user, COUNT(first_user.id_user) AS total_matches

FROM likes AS first_user

JOIN likes AS second_user
ON second_user.id_artist = first_user.id_artist
AND second_user.id_user != first_user.id_user

GROUP BY first_user.id_user, second_user.id_user

ORDER BY total_matches DESC

LIMIT 1

ध्यान दें कि यह बहुत कुशल नहीं है। इसे हल करने का एक तरीका है LIMIT 1 के साथ इस क्वेरी के आउटपुट वाली 'कैश टेबल' बनाना भाग हटा दिया। कुछ प्रासंगिक अनुक्रमणिका जोड़ें और इस कैश तालिका को क्वेरी करें। आप इस तालिका को समय-समय पर अद्यतन करने के लिए क्रॉन जॉब सेट कर सकते हैं।

उदाहरण:

CREATE TABLE IF NOT EXISTS `likes` (
  `id_user` varchar(50) DEFAULT NULL,
  `id_artist` varchar(50) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

INSERT INTO `likes` (`id_user`, `id_artist`) VALUES ('8', '39'), ('8', '37'), ('4', '37'), ('8', '24'), ('8', '7'), ('4', '28'), ('8', '28'), ('4', '27'), ('4', '11'), ('8', '49'), ('4', '7'), ('4', '40'), ('4', '29'), ('8', '22'), ('4', '29'), ('8', '11'), ('8', '28'), ('4', '7'), ('4', '31'), ('8', '42'), ('8', '25'), ('4', '25'), ('4', '17'), ('4', '32'), ('4', '46'), ('4', '19'), ('8', '34'), ('3', '32'), ('4', '21')

+---------+---------+---------------+
| id_user | id_user | total_matches |
+---------+---------+---------------+
| 8       | 4       |             7 |
+---------+---------+---------------+


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कमांड लाइन के माध्यम से mysql में एक csv आयात करना

  2. प्रारंभिक डेटाबेस बनाने से इनकार किया गया- मैं सही पहुंच कैसे प्रदान करूं?

  3. MySql mysql.h फ़ाइल VS2008 C++ में नहीं मिली <शुरुआती प्रश्न>

  4. कैसे केवल एसक्यूएल वाक्य रचना (PHP के बिना) का उपयोग कर mysql तालिका में ब्लॉब में छवियों को सम्मिलित करने के लिए?

  5. MySQL सम्मिलित क्वेरी से नया रिकॉर्ड प्राथमिक कुंजी आईडी प्राप्त करें?