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

प्रथम और अंतिम नाम से अद्वितीय उपयोगकर्ता नाम उत्पन्न करें?

CREATE TABLE bar LIKE foo;

INSERT INTO bar (id,user,first,last)
(SELECT f.id,CONCAT(SUBSTRING(f.first,1,1),f.last,
     (SELECT COUNT(*) FROM foo f2
         WHERE SUBSTRING(f2.first,1,1) = SUBSTRING(f.first,1,1)
               AND f2.last = f.last AND f2.id <= f.id
         )),f.first,f.last from foo f);

DROP TABLE foo;
RENAME TABLE bar TO foo;

यह प्राथमिक कुंजी id . पर निर्भर करता है , इसलिए प्रत्येक रिकॉर्ड के लिए bar . में डाला गया , हम केवल foo . में पाए गए डुप्लिकेट की गणना करते हैं id . के साथ bar.id . से कम ।

दिया गया फू:

select * from foo;
+----+------+--------+--------+
| id | user | first  | last   |
+----+------+--------+--------+
|  1 | aaa  | Roger  | Hill   | 
|  2 | bbb  | Sally  | Road   | 
|  3 | ccc  | Fred   | Mount  | 
|  4 | ddd  | Darren | Meadow | 
|  5 | eee  | Sharon | Road   | 
+----+------+--------+--------+

उपरोक्त INSERT में bar , जिसके परिणामस्वरूप:

select * from bar;
+----+----------+--------+--------+
| id | user     | first  | last   |
+----+----------+--------+--------+
|  1 | RHill1   | Roger  | Hill   | 
|  2 | SRoad1   | Sally  | Road   | 
|  3 | FMount1  | Fred   | Mount  | 
|  4 | DMeadow1 | Darren | Meadow | 
|  5 | SRoad2   | Sharon | Road   | 
+----+----------+--------+--------+

उपयोगकर्ता नामों के अंत से "1" को हटाने के लिए,

INSERT INTO bar (id,user,first,last)
(SELECT f3.id,
        CONCAT(
            SUBSTRING(f3.first,1,1),
            f3.last,
            CASE f3.cnt WHEN 1 THEN '' ELSE f3.cnt END),
        f3.first,
        f3.last
 FROM (
    SELECT
        f.id,
        f.first,
        f.last,
        (
            SELECT COUNT(*) 
            FROM foo f2
            WHERE SUBSTRING(f2.first,1,1) = SUBSTRING(f.first,1,1)
            AND f2.last = f.last AND f2.id <= f.id
        ) as cnt
    FROM foo f) f3)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysqldump का उपयोग करके MySQL InnoDB डेटाबेस को डंप और लोड करने का सबसे तेज़ तरीका क्या है?

  2. MySQL में एकाधिक पंक्तियों को कैसे सम्मिलित करें

  3. शीर्ष और आदेश एसक्यूएल त्रुटि द्वारा

  4. आप अपने डेटाबेस संरचना का संशोधन नियंत्रण कैसे बनाए रखते हैं?

  5. Low_case_table_names MySQL 8.0.12 में सेटिंग्स