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

MYSQL क्वेरी - वे पंक्तियाँ प्राप्त करें जहाँ मूल्य बदला गया है

ऐसा कुछ करने के लिए, आपको दो पास चाहिए, क्योंकि आप प्रत्येक पंक्ति की तुलना उसके पहले वाले से करेंगे।

ऐसा करने का एक ऐसा तरीका सबसे पहले होगा:

SET @lastprice = 0.0;

फिर, आपका "पहला पास" ऐसा दिखेगा:

SELECT `Date`, @lastprice AS `oldprice`, @lastprice := `price` AS `newprice`
FROM `tablename` ORDER BY `Date` ASC;

यहां आदेश महत्वपूर्ण है, क्योंकि आप एक कालानुक्रमिक समयरेखा बनाना चाहते हैं।

फिर, आपको केवल इस परिणाम से पंक्तियों को पुनः प्राप्त करने की आवश्यकता है जहां पुरानी और नई कीमतें भिन्न हैं। ऐसा कुछ करेगा:

SELECT * FROM ("Above subquery here") `tmp` WHERE `oldprice` != `newprice`;

आपकी अंतिम क्वेरी कुछ इस तरह दिखेगी:

SET @lastprice = 0.0;
SELECT * FROM (
    SELECT `Date`, @lastprice AS `oldprice`, @lastprice := `price` AS `newprice`
    FORM `tablename` ORDER BY `Date` ASC
) `tmp`
WHERE `oldprice` != `newprice`;

वैकल्पिक रूप से, आप सबक्वेरी परिणामों को संग्रहीत करने के लिए एक अस्थायी तालिका का उपयोग करना पसंद कर सकते हैं। उस स्थिति में, यह कुछ इस तरह दिखाई देगा:

SET @lastprice = 0.0;
CREATE TEMPORARY TABLE `tmp`
    SELECT `Date`, @lastprice AS `oldprice`, @lastprice := `price` AS `newprice`
    FROM `tablename` ORDER BY `Date` ASC;
SELECT * FROM `tmp` WHERE `oldprice` != `newprice`;
DROP TEMPORARY TABLE `tmp`;

सटीक कार्यान्वयन आप पर निर्भर है, लेकिन इसे करने का यह एक अच्छा तरीका होगा।




  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 विभिन्न मूल्यों के लिए कई बार COL का चयन करें

  2. mysql डेटाबेस को कैसे छोड़ें और फिर से पॉप्युलेट करें?

  3. BIGINT UNSIGNED VALUE मेरी SQL सीमा से बाहर है

  4. IntegrityError:(1062, कुंजी के लिए डुप्लिकेट प्रविष्टि)

  5. क्या कॉलम ऑर्डरिंग Microsoft SQL Server 2012 में प्रदर्शन को प्रभावित करता है?