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

MySQL चुनें और ऑर्डर करें

निम्नलिखित डेटा सेट पर विचार करें...

DROP TABLE IF EXISTS results;

CREATE TABLE results
(id_competitor   INT NOT NULL
,score    INT NOT NULL
,id_route INT NOT NULL
,PRIMARY KEY(id_competitor,id_route)
);

INSERT INTO results VALUES
(1,100,2),
(2,100,2),
(3,60,2),
(4 ,60,2),
(1,70,1),
(2,80,1),
(3,70,1),
(4,100,1);

SELECT * FROM results;
+---------------+-------+----------+
| id_competitor | score | id_route |
+---------------+-------+----------+
|             1 |    70 |        1 |
|             1 |   100 |        2 |
|             2 |    80 |        1 |
|             2 |   100 |        2 |
|             3 |    70 |        1 |
|             3 |    60 |        2 |
|             4 |   100 |        1 |
|             4 |    60 |        2 |
+---------------+-------+----------+

हम id_route=2 पर प्रतिस्पर्धियों को उच्चतम स्कोर के आधार पर व्यवस्थित करना चाहते हैं। जहां स्कोर बराबर होते हैं, वहां id_route 1 के परिणामों को ध्यान में रखा जाना चाहिए। सही क्रम 2,1,4,3 होना चाहिए।

मध्यवर्ती समाधान...

SELECT * 
  FROM results x 
  JOIN results y 
    ON y.id_competitor = x.id_competitor 
   AND y.id_route = 1 
 WHERE x.id_route = 2;
+---------------+-------+----------+---------------+-------+----------+
| id_competitor | score | id_route | id_competitor | score | id_route |
+---------------+-------+----------+---------------+-------+----------+
|             1 |   100 |        2 |             1 |    70 |        1 |
|             2 |   100 |        2 |             2 |    80 |        1 |
|             3 |    60 |        2 |             3 |    70 |        1 |
|             4 |    60 |        2 |             4 |   100 |        1 |
+---------------+-------+----------+---------------+-------+----------+

पूरा समाधान...

SELECT x.id_competitor
     , x.score final_score
     , y.score semi_final_score 
  FROM results x 
  JOIN results y 
    ON y.id_competitor = x.id_competitor 
   AND y.id_route = 1 
 WHERE x.id_route = 2 
 ORDER 
    BY final_score DESC
     , semi_final_score DESC;
+---------------+-------------+------------------+
| id_competitor | final_score | semi_final_score |
+---------------+-------------+------------------+
|             2 |         100 |               80 |
|             1 |         100 |               70 |
|             4 |          60 |              100 |
|             3 |          60 |               70 |
+---------------+-------------+------------------+



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Knex को अपग्रेड करने के बाद कनेक्शन प्राप्त करने में समय समाप्त होने के बाद

  2. मैं mysql पासवर्ड सत्यापन कैसे बंद करूं?

  3. MySQL में group_concat प्रदर्शन समस्या

  4. मैं जावास्क्रिप्ट छवि स्लाइडर में MySQL डेटाबेस से छवियों को कैसे प्रदर्शित करूं?

  5. नोड js में नेस्टेड क्वेरी mysql का उपयोग कर