سؤال

السؤال الأساسي هو كيفية الخروج من هذا:

id    string
1          A
1          B
2          C

الى هذا:

id    string
1          A B
2          C
هل كانت مفيدة؟

المحلول

SELECT id, GROUP_CONCAT(string SEPARATOR ' ') FROM table GROUP BY id;

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

من الرابط أعلاه، GROUP_CONCAT:تقوم هذه الدالة بإرجاع نتيجة سلسلة بقيم غير فارغة متسلسلة من مجموعة.تقوم بإرجاع NULL إذا لم تكن هناك قيم غير NULL.

نصائح أخرى

SELECT id, GROUP_CONCAT( string SEPARATOR ' ') FROM table GROUP BY id

المزيد من التفاصيل هنا.

من الرابط أعلاه، GROUP_CONCAT:تقوم هذه الدالة بإرجاع نتيجة سلسلة بقيم غير فارغة متسلسلة من مجموعة.تقوم بإرجاع NULL إذا لم تكن هناك قيم غير NULL.

SELECT id, GROUP_CONCAT(CAST(string as CHAR)) FROM table GROUP BY id

سوف أعطيك سلسلة مفصولة بفواصل

SET group_concat_max_len=100000000
SELECT id, GROUP_CONCAT(string SEPARATOR ' ') FROM table GROUP BY id;

:- في MySQL ، يمكنك الحصول على القيم المتسلسلة لمجموعات التعبير.للتخلص من القيم المكررة، استخدم متميز بند.لفرز القيم في النتيجة، استخدم جملة ORDER BY.للفرز ترتيب عكسي, ، أضف ال DESC (تنازلي) الكلمة الأساسية لاسم العمود الذي تقوم بالفرز حسبه في جملة ORDER BY.الافتراضي هو ترتيب تصاعدي.قد يتم تحديد ذلك بشكل صريح باستخدام الكلمة الأساسية ASC.الفاصل الافتراضي بين القيم في المجموعة هو الفاصلة (“،”).لتحديد فاصل بشكل صريح، استخدم SEPARATOR متبوعًا بالقيمة الحرفية للسلسلة التي يجب إدراجها بين قيم المجموعة.لإزالة الفاصل تمامًا، حدد فاصل ''.

GROUP_CONCAT([DISTINCT] expr [,expr ...]
             [ORDER BY {unsigned_integer | col_name | expr}
                 [ASC | DESC] [,col_name ...]]
             [SEPARATOR str_val])

أو

mysql> SELECT student_name,
    ->     GROUP_CONCAT(DISTINCT test_score
    ->               ORDER BY test_score DESC SEPARATOR ' ')
    ->     FROM student
    ->     GROUP BY student_name;

إجابات رائعة.لقد واجهت أيضًا مشكلة مع NULLS وتمكنت من حلها عن طريق تضمين COALESCE داخل GROUP_CONCAT.مثال على النحو التالي:

SELECT id, GROUP_CONCAT(COALESCE(string,'') SEPARATOR ' ') 
FROM table 
GROUP BY id;

آمل أن يساعد هذا شخص آخر

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top