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

एसक्यूएल द्वारा एक ही आइटम के पास कैसे गठबंधन करें?

अगर आप कोशिश करते हैं:

SET @name:='',@num:=0;

SELECT id,
       @num:= if(@name = user, @num, @num + 1) as number,
       @name := user as user
FROM foo
ORDER BY id ASC;

यह देता है:

+------+--------+------+
| id   | number | user |
+------+--------+------+
|    1 |      1 | a    |
|    2 |      1 | a    |
|    3 |      1 | a    |
|    4 |      2 | b    |
|    5 |      2 | b    |
|    6 |      2 | b    |
|    7 |      3 | a    |
|    8 |      3 | a    |
+------+--------+------+

तो फिर आप कोशिश कर सकते हैं:

SET @name:='',@num:=0;

SELECT COUNT(*) as count, user
FROM (
SELECT @num:= if(@name = user, @num, @num + 1) as number,
       @name := user as user
FROM foo
ORDER BY id ASC
) x
GROUP BY number;

जो देता है

+-------+------+
| count | user |
+-------+------+
|     3 | a    |
|     3 | b    |
|     2 | a    |
+-------+------+

(मैंने अपनी टेबल foo . को कॉल किया और सिर्फ इस्तेमाल किए गए नाम a और b क्योंकि मैं zhangsan write लिखने में बहुत आलसी था और lisi बार-बार)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. django ORM कच्चे SQL की तुलना में इतना धीमा क्यों है

  2. PGSQL में MySQL के सबस्ट्रिंग_इंडेक्स () का अनुकरण करना

  3. JSON कैसे mysql से छवियों को पार्स करें और सूचीदृश्य को पॉप्युलेट करें

  4. रेल में महीने और साल दोनों के हिसाब से ग्रुप रिकॉर्ड्स

  5. MySQL 'अपडेट टाइमस्टैम्प' कॉलम - ट्रिगर