GROUP_CONCAT অর্ডার দ্বারা


137

আমার মতো একটি টেবিল রয়েছে:

+-----------+-------+------------+
| client_id | views | percentage |
+-----------+-------+------------+
|         1 |     6 |         20 |
|         1 |     4 |         55 |
|         1 |     9 |         56 |
|         1 |     2 |         67 |
|         1 |     7 |         80 |
|         1 |     5 |         66 |
|         1 |     3 |         33 |
|         1 |     8 |         34 |
|         1 |     1 |         52 |

আমি চেষ্টা করেছি group_concat:

SELECT li.client_id, group_concat(li.views) AS views,  
group_concat(li.percentage) FROM li GROUP BY client_id;

+-----------+-------------------+-----------------------------+
| client_id | views             | group_concat(li.percentage) |
+-----------+-------------------+-----------------------------+
|         1 | 6,4,9,2,7,5,3,8,1 | 20,55,56,67,80,66,33,34,52  |
+-----------+-------------------+-----------------------------+

তবে আমি মতামতগুলি যথাযথভাবে পেতে চাই:

+-----------+-------------------+----------------------------+
| client_id | views             | percentage                 |
+-----------+-------------------+----------------------------+
|         1 | 1,2,3,4,5,6,7,8,9 | 52,67,33,55,66,20,80,34,56 |
+-----------+-------------------+----------------------------+

2
টেবিলের ভিউ এবং শতাংশের মানগুলি কমা দ্বারা পৃথক হওয়া মান হিসাবে সঞ্চিত হয়?
বীরেন্দ্র

না তারা এ
জাতীয়ভাবে

উত্তর:


304

আপনি ফাংশনটির ORDER BYভিতরে এইভাবে ব্যবহার করতে পারেন GROUP_CONCAT:

SELECT li.client_id, group_concat(li.percentage ORDER BY li.views ASC) AS views, 
group_concat(li.percentage ORDER BY li.percentage ASC) 
FROM li GROUP BY client_id

11
এটি কি group_concat(li.percentage ORDER BY li.views ASC)এমনটি হওয়া উচিত নয় যে মূল পোস্টের অনুরোধ অনুসারে শতাংশের সাথে মতামত মেলে?
কাই কার্ভার

@aleroot, এই প্রশ্নটি কি MySQL নির্দিষ্ট?
পেসারিয়ার 20

হ্যাঁ, GROUP_CONCAT একটি মাইএসকিউএল একমাত্র ফাংশন, তবে অন্য সার্ভারেট ফাংশন সহ অন্য ডাটাবেসে একইরকম ফলাফল অর্জন করা যেতে পারে ...
আলেরুট

2
আপনি একই_আর গ্রুপ_কনক্যাট () ইঙ্গিত দিয়ে গ্রুপ_কনক্যাটকে অর্ডার দিলে আপনি কেবল লিখতে পারেন group_concat(li.views ORDER BY 1)। সহজ!
Doin থেকে

1
আপনি যদি পৃথককারীও ব্যবহার করে থাকেন: SELECT GROUP_CONCAT(CONCAT(u.RegionName,'-',u.UserName) ORDER BY u.RegionName SEPARATOR '@@')
হিমালয় গার্গ

16

গোষ্ঠী_কনক্যাটটি ধারা দ্বারা তার নিজস্ব আদেশকে সমর্থন করে

http://mahmudahsan.wordpress.com/2008/08/27/mysql-the-group_concat-function/

সুতরাং আপনার লিখতে সক্ষম হওয়া উচিত:

SELECT li.clientid, group_concat(li.views order by views) AS views,
group_concat(li.percentage order by percentage) 
FROM table_views GROUP BY client_id


1

আইএমপালায়, GROUP_CONCAT এ অর্ডার না পাওয়া কোডারস কো-তে সমস্যাযুক্ত হতে পারে। এটির জন্য আমাদের কিছু ধরণের কাজ রয়েছে (র্যাক্স / ইমপালার জন্য এটি আমাদের দরকার)। আপনার যদি ইমপালায় একটি অর্ডার বাই ধারা সহ GROUP_CONCAT ফলাফলের প্রয়োজন হয় তবে এই ব্লগ পোস্টটি একবার দেখুন: http://raxdb.com/blog/sorting-by-regex/


নতুন লিঙ্কটি কোডার্সকো.ব্লগ
জন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.