Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

แสดงรายการที่ซ้ำกันเป็นค่าที่แตกต่างกันโดยมีค่าที่สอดคล้องกันเป็นรายการที่คั่นด้วยเครื่องหมายจุลภาคที่แตกต่างกันใน MySQL หรือไม่


สำหรับสิ่งนี้ คุณสามารถใช้ GROUP_CONCAT() คุณต้องใช้ DISTINCT เพื่อดึงข้อมูลบันทึกที่แตกต่างกัน ให้เราสร้างตารางก่อน -

mysql> สร้างตาราง DemoTable (รหัส int ไม่ใช่ NULL AUTO_INCREMENT คีย์หลัก ชื่อ varchar (40) คะแนน int); ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.53 วินาที)

แทรกระเบียนบางส่วนในตารางโดยใช้คำสั่ง insert -

mysql> แทรกลงในค่า DemoTable(Name,Score)('Chris',56);Query OK, 1 แถวได้รับผลกระทบ (0.21 วินาที)mysql> แทรกลงในค่า DemoTable(Name,Score)('Robert',78);แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.17 วินาที)mysql> แทรกลงใน DemoTable (ชื่อคะแนน) ค่า ('Chris', 56); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.42 วินาที) mysql> แทรกลงใน DemoTable (ชื่อ, คะแนน) values('Bob',89);ตกลง สืบค้น 1 แถวได้รับผลกระทบ (0.12 วินาที)mysql> แทรกลงใน DemoTable(ชื่อ,คะแนน) ค่า('Chris',56);ตกลง ตกลง 1 แถวได้รับผลกระทบ (0.09 วินาที)mysql> แทรกลงในค่า DemoTable(Name,Score)('Chris',57);Query OK, 1 แถวได้รับผลกระทบ (0.13 วินาที)

แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select -

mysql> เลือก *จาก DemoTable;

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ ในที่นี้ เราได้บันทึก "ชื่อ" ซ้ำแล้วซ้ำอีกโดยมีค่า "คะแนน" ซ้ำกัน -

<ก่อนหน้า>+----+---------+-------+| รหัส | ชื่อ | คะแนน |+----+---------+-------+| 1 | คริส | 56 || 2 | โรเบิร์ต | 78 || 3 | คริส | 56 || 4 | บ๊อบ | 89 || 5 | คริส | 56 || 6 | คริส | 57 |+----+-------+-------+6 แถวในชุด (0.00 วินาที)

ต่อไปนี้เป็นแบบสอบถามเพื่อวนรอบบันทึกจากตารางที่ใช้ GROUP BY อยู่แล้ว -

mysql> เลือกชื่อ group_concat(DISTINCT Score separator ',') จากกลุ่ม DemoTable ตามชื่อ

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+---------+----------------------------- --------+| ชื่อ | group_concat(ตัวคั่นคะแนน DISTINCT ',') |+-----------+------------------------------------ --------------+| บ๊อบ | 89 || คริส | 56,57 || โรเบิร์ต | 78 |+-------+-------------------------------------- ------+3 แถวในชุด (0.00 วินาที)