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

मैसकल स्प्लिट स्ट्रिंग और परिणामों के साथ चयन करें

आपको सामान्यीकरण के बारे में सोचना चाहिए। हालांकि वर्तमान स्कीमा के लिए निम्नलिखित पर विचार करें

mysql> select * from frontend_users ;
+------+-----------+---------+
| uid  | usergroup | name    |
+------+-----------+---------+
|    1 | 1,2,3     | Michael |
|    2 | 2         | Tobias  |
|    3 | 1         | Colin   |
+------+-----------+---------+
3 rows in set (0.00 sec)

mysql> select * from usergroup ;
+------+----------+
| uid  | title    |
+------+----------+
|    1 | member   |
|    2 | reporter |
|    3 | admin    |
+------+----------+
3 rows in set (0.00 sec)

वांछित परिणाम प्राप्त करने के लिए आप निम्न क्वेरी का उपयोग कर सकते हैं जो लंबे समय तक कुशल नहीं है

select 
u.uid,
u.name, 
group_concat(g.title) as groups 
from frontend_users u 
join usergroup g on find_in_set(g.uid,u.usergroup) > 0 
group by u.uid ;

+------+---------+-----------------------+
| uid  | name    | groups                |
+------+---------+-----------------------+
|    1 | Michael | admin,reporter,member |
|    2 | Tobias  | reporter              |
|    3 | Colin   | member                |
+------+---------+-----------------------+

अब एक बेहतर तरीका यह होगा कि

. के रूप में एक संबद्धता तालिका बनाई जाए
mysql> create table user_to_group (uid int, gid int);
Query OK, 0 rows affected (0.15 sec)

mysql> insert into user_to_group values (1,1),(1,2),(1,3),(2,2),(3,1);
Query OK, 5 rows affected (0.02 sec)
Records: 5  Duplicates: 0  Warnings: 0

और एक बेहतर क्वेरी होगी

select 
u.uid,
u.name, 
group_concat(g.title) as groups 
from frontend_users u 
join user_to_group ug on ug.uid = u.uid 
join usergroup g on g.uid = ug.gid 
group by u.uid ;

+------+---------+-----------------------+
| uid  | name    | groups                |
+------+---------+-----------------------+
|    1 | Michael | member,admin,reporter |
|    2 | Tobias  | reporter              |
|    3 | Colin   | member                |
+------+---------+-----------------------+


  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 कनेक्टर/पायथन - MySQL तालिका में अजगर चर डालें

  2. MySQL में पंक्ति से स्तंभ परिवर्तन

  3. MySql क्वेरी परिणाम दिन के सभी घंटे

  4. पाइथन MySQLdb में निष्पादन धीमा क्यों है?

  5. अगर मैं MySQL में int(255) स्टोर करता हूं तो MAX नंबर क्या होगा?