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

จะป้องกัน MySQL GROUP BY จากการยุบค่า NULL เป็นแถวเดียวได้อย่างไร


สำหรับสิ่งนี้ คุณสามารถใช้ IFNULL() ร่วมกับ ORDER BY clause ให้เราสร้างตารางก่อน -

mysql> สร้างตาราง DemoTable1511 -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT PRIMARY KEY, -> FirstName varchar(20) -> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (1.97 วินาที)

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

mysql> แทรกลงในค่า DemoTable1511(FirstName) ('John');Query OK, 1 แถวได้รับผลกระทบ (0.20 วินาที)mysql> แทรกลงในค่า DemoTable1511(FirstName) ('Robert');Query OK, 1 แถวได้รับผลกระทบ ( 0.29 วินาที) mysql> แทรกลงในค่า DemoTable1511 (FirstName) ('Mike'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.10 วินาที) mysql> แทรกลงในค่า DemoTable1511 (FirstName) ('Robert'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 1.08 วินาที) mysql> แทรกลงในค่า DemoTable1511 (FirstName) (NULL) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.68 วินาที) mysql> แทรกลงในค่า DemoTable1511 (FirstName) (NULL) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (1.91 วินาที) mysql> แทรกลงในค่า DemoTable1511(FirstName) ('Mike'); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.51 วินาที)

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

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

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

<ก่อนหน้า>+----+-----------+| รหัส | ชื่อจริง |+----+-----------+| 1 | จอห์น || 2 | โรเบิร์ต || 3 | ไมค์ || 4 | โรเบิร์ต || 5 | NULL || 6 | NULL || 7 | Mike |+----+-----------+7 แถวในชุด (0.00 วินาที)

นี่คือแบบสอบถามเพื่อป้องกันไม่ให้ MySQL GROUP BY ยุบค่า NULL เป็นแถวเดียว -

mysql> เลือก min(Id) เป็น Id,FirstName จาก DemoTable1511 group โดย FirstName,ifnull(FirstName,Id) เรียงลำดับตาม Id;

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

<ก่อนหน้า>+------+-----------+| รหัส | ชื่อจริง |+------+-----------+| 1 | จอห์น || 2 | โรเบิร์ต || 3 | ไมค์ || 5 | NULL || 6 | NULL |+------+-----------+5 แถวในชุด (0.00 วินาที)