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

MySQL में Oracle के RowID के बराबर

MySQL में आप आमतौर पर कार्यक्षमता प्राप्त करने के लिए सत्र चर का उपयोग करते हैं:

SELECT @rowid:[email protected]+1 as rowid
FROM table1, (SELECT @rowid:=0) as init
ORDER BY sorter_field

लेकिन आप उस टेबल पर सॉर्ट नहीं कर सकते जिसे आप सबक्वेरी में से हटाने का प्रयास कर रहे हैं।

यूपीडी :यानी आपको एक अस्थायी तालिका बनानी होगी, अस्थायी तालिका में रेंजिंग सबक्वेरी सम्मिलित करनी होगी और अस्थायी तालिका के साथ जुड़कर मूल तालिका से हटाना होगा (आपको कुछ विशिष्ट पंक्ति पहचानकर्ता की आवश्यकता होगी):

CREATE TEMPORARY TABLE duplicates ...

INSERT INTO duplicates (rowid, field1, field2, some_row_uid)
SELECT
  @rowid:=IF(@f1=field1 AND @f2=field2, @rowid+1, 0) as rowid,
  @f1:=field1 as field1,
  @f2:=field2 as field2,
  some_row_uid
FROM testruns t, (SELECT @rowid:=NULL, @f1:=NULL, @f2:=NULL) as init
ORDER BY field1, field2 DESC;

DELETE FROM my_table USING my_table JOIN duplicates
  ON my_table.some_row_uid = duplicates.some_row_uid AND duplicates.rowid > 0

चूंकि यह एक बार का ऑपरेशन है, इसलिए इसे बहुत अधिक ओवरहेड नहीं लाना चाहिए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. php mysqli_connect:क्लाइंट के लिए अज्ञात प्रमाणीकरण विधि [caching_sha2_password]

  2. किसी टेबल/टेबल पर विदेशी कुंजियों की दोबारा जांच करने के लिए InnoDB को बाध्य करें?

  3. PHPMyAdmin में फ़ाइल आकार सीमा आयात करें

  4. प्रबंधित होस्टिंग खातों पर phpMyAdmin कैसे स्थापित करें

  5. MySQL में फॉरेन की चेक को डिसेबल कैसे करें