Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में अधिकतम अपवोट (upvote) वाली छवि पथ प्राप्त करना - सबक्वेरी के साथ

MySQL में किसी कॉलम (जैसे अपवोट) के अधिकतम मान वाली पंक्ति का संबंधित कॉलम मान (जैसे छवि पथ) प्राप्त करने के लिए सबक्वेरी के साथ IN या = ऑपरेटर का उपयोग करें।

सिंटैक्स

SELECT column_to_get FROM table_name 
WHERE max_column IN (SELECT MAX(max_column) FROM table_name);

व्यावहारिक उदाहरण

1. टेबल बनाएं और डेटा डालें

mysql> CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ImagePath VARCHAR(100),
    UpvoteValue INT
);
Query OK, 0 rows affected (0.72 sec)

mysql> INSERT INTO DemoTable (ImagePath, UpvoteValue) VALUES 
('Image1.jpeg', 90),
('Image2.jpeg', 10),
('Image3.jpeg', 120),
('Image4.jpeg', 114);
Query OK, 4 rows affected (0.25 sec)

2. सभी रिकॉर्ड्स देखें

mysql> SELECT * FROM DemoTable;
+----+-------------+-------------+
| Id | ImagePath   | UpvoteValue |
+----+-------------+-------------+
| 1  | Image1.jpeg | 90          |
| 2  | Image2.jpeg | 10          |
| 3  | Image3.jpeg | 120         |
| 4  | Image4.jpeg | 114         |
+----+-------------+-------------+
4 rows in set (0.00 sec)

3. अधिकतम अपवोट वाली छवि प्राप्त करें

mysql> SELECT ImagePath FROM DemoTable 
WHERE UpvoteValue IN (SELECT MAX(UpvoteValue) FROM DemoTable);
+-------------+
| ImagePath   |
+-------------+
| Image3.jpeg |
+-------------+
1 row in set (0.00 sec)

वैकल्पिक तरीके

सबक्वेरी के साथ = (एकल मान के लिए)

SELECT ImagePath FROM DemoTable 
WHERE UpvoteValue = (SELECT MAX(UpvoteValue) FROM DemoTable);

JOIN के साथ (अधिक कुशल बड़े डेटासेट के लिए)

SELECT d.ImagePath FROM DemoTable d
JOIN (SELECT MAX(UpvoteValue) AS max_upvote FROM DemoTable) m
ON d.UpvoteValue = m.max_upvote;

ORDER BY + LIMIT (सरल)

SELECT ImagePath FROM DemoTable 
ORDER BY UpvoteValue DESC LIMIT 1;

विंडो फ़ंक्शन (MySQL 8.0+)

SELECT ImagePath FROM (
    SELECT ImagePath, UpvoteValue,
           MAX(UpvoteValue) OVER () AS max_upvote
    FROM DemoTable
) t WHERE UpvoteValue = max_upvote;

टाई (बराबरी) संभालना

यदि एकाधिक पंक्तियों में समान अधिकतम मान है:

  • IN / = / JOIN - सभी टाई पंक्तियाँ लौटाते हैं
  • LIMIT 1 - केवल एक लौटाता है (कौन सा अनिश्चित)
  • निश्चित टाई-ब्रेकिंग के लिए: ORDER BY UpvoteValue DESC, Id LIMIT 1

प्रदर्शन तुलना

तरीकाप्रदर्शनटाई हैंडलिंग
सबक्वेरी IN/=अच्छा (इंडेक्स के साथ)सभी टाई
JOINबहुत अच्छासभी टाई
ORDER BY LIMITअच्छा (इंडेक्स के साथ)एक (अनिश्चित)
विंडो फ़ंक्शनअच्छासभी टाई

सर्वोत्तम अभ्यास

  • UpvoteValue कॉलम पर इंडेक्स बनाएं
  • सरल मामलों के लिए ORDER BY LIMIT उपयोग करें
  • जटिल क्वेरीज़/बड़े डेटा के लिए JOIN या विंडो फ़ंक्शन प्राथमिकता दें
  1. - MySQL में SELECT 1 का उपयोग करके मान मौजूद है या नहीं कैसे चेक करें

    EXISTS पैटर्न के रूप में SELECT 1 का उपयोग मान मौजूद है या नहीं जांचने के लिए SELECT 1 पैटर्न का उपयोग करें। यह पूर्ण पंक्ति लौटाने से अधिक कुशल है। सिंटैक्स: SELECT 1 FROM yourTableName WHERE yourColumnName = yourValue; यदि उपरोक्त 1 लौटाता है, तो मान डेटाबेस में मौजूद है। आइए पहले एक टेबल बनाते है

  1. - MySQL क्वेरी में COUNT के साथ CASE शर्त का उपयोग कैसे करें

    COUNT() के अंदर CASE WHEN का उपयोग करके सशर्त गिनती MySQL में इसके लिए CASE WHEN का उपयोग करें और COUNT() मेथड के अंदर CASE शर्त सेट करें। पहले टेबल बनाएं: create table DemoTable1374 ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Name varchar(20), Score int ); Query OK, 0 rows affected (0.61 sec) रि

  1. - MySQL में विशिष्ट मान वाले कॉलम की संख्या कैसे गिनें?

    SUM() के साथ गणना बाइनरी मान (0/1) वाले कॉलम के लिए: select sum(value1+value2+value3) as `Total_Number_Of_1`, sum(value1 and value2 and value3) as `Total_Number_Of_Rows_With_1` from yourTableName; उदाहरण insert into demo36(value1,value2,value3) values(1,0,0), (1,0,1), (1,1,1), (0,1,0), (