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

แสดงรายการแถวทั้งหมดตามกลุ่มด้วย MySQL GROUP BY?


หากต้องการแสดงรายการแถวทั้งหมดตามกลุ่ม คุณสามารถใช้ GROUP_CONCAT() ให้เราสร้างตารางก่อน -

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

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

mysql> แทรกลงในค่า DemoTable(Name,Value)('John','John');Query OK, 1 แถวได้รับผลกระทบ (0.15 วินาที)mysql> แทรกลงในค่า DemoTable(Name,Value)('Carol', 'Carol');แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.21 วินาที) mysql> แทรกลงในค่า DemoTable (ชื่อค่า) ('John', 'Works'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.13 วินาที) mysql> แทรกลงใน ค่า DemoTable(ชื่อ,ค่า) ('Carol','Works');แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.22 วินาที)mysql> แทรกลงในค่า DemoTable (ชื่อค่า) ('John','At');แบบสอบถามตกลง , 1 แถวได้รับผลกระทบ (0.15 วินาที)mysql> แทรกลงในค่า DemoTable (ชื่อ, ค่า) ('Carol', 'ที่'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที) mysql> แทรกลงในค่า DemoTable (ชื่อ, ค่า) ('John','Amazon');Query OK, 1 แถวได้รับผลกระทบ (0.15 วินาที)mysql> แทรกลงในค่า DemoTable (ชื่อ, ค่า) ('Carol', 'Google'); Query OK, 1 แถวได้รับผลกระทบ (0.16 วินาที )

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

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

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

<ก่อนหน้า>+----+-------+-------+| รหัส | ชื่อ | ความคุ้มค่า |+----+-------+-------+| 1 | จอห์น | จอห์น || 2 | แครอล | แครอล || 3 | จอห์น | ผลงาน || 4 | แครอล | ผลงาน || 5 | จอห์น | ที่ || 6 | แครอล | ที่ || 7 | จอห์น | อเมซอน || 8 | แครอล | Google |+----+-------+-------+8 แถวในชุด (0.00 วินาที)

ต่อไปนี้เป็นแบบสอบถามเพื่อแสดงแถวทั้งหมดตามกลุ่ม ค่าของ 'John' จะถูกดึงออกมาเช่น "John Works At Amazon จาก id 1, 3, 5, 7 ในทำนองเดียวกันก็จะทำงานสำหรับ 'Carol' -

mysql> เลือกชื่อ GROUP_CONCAT(Value SEPARATOR ' ') AS `Complete_Status` จากกลุ่ม DemoTable ตามชื่อ

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

<ก่อนหน้า>+-------+----------------------+| ชื่อ | Complete_Status |+-------+----------------------+| แครอล | Carol ทำงานที่ Google || จอห์น | John ทำงานที่ Amazon | +-------+----------------------+2 แถวในชุด (0.00 วินาที)