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

ความแตกต่างระหว่างการนับ (*) และจำนวน (ชื่อคอลัมน์) ใน MySQL?


count(*) คืนค่าแถวทั้งหมดไม่ว่าคอลัมน์จะมีค่า null หรือไม่ก็ตาม ในขณะที่การ count(columnName) จะคืนค่าจำนวนแถวยกเว้นแถวที่เป็นค่าว่าง

เรามาสร้างตารางกันก่อน

ต่อไปนี้เป็นแบบสอบถาม

mysql> สร้างตาราง ifNotNullDemo -> ( -> Name varchar(20) -> );Query OK, 0 แถวได้รับผลกระทบ (0.54 วินาที)

ต่อไปนี้เป็นแบบสอบถามเพื่อแทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก:

mysql> แทรกลงในค่า ifNotNullDemo ('Chris'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงในค่า ifNotNullDemo (''); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.13 วินาที) mysql> แทรกเข้าไป ค่า ifNotNullDemo ('Robert'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.24 วินาที) mysql> แทรกลงในค่า ifNotNullDemo (null); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.30 วินาที) mysql> แทรกลงในค่า ifNotNullDemo (0); แบบสอบถามตกลง , 1 แถวได้รับผลกระทบ (0.16 วินาที)

ต่อไปนี้เป็นแบบสอบถามเพื่อแสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select:

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

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

<ก่อนหน้า>+---------+| ชื่อ |+-------+| คริส || || โรเบิร์ต || NULL || 0 |+-------+5 แถวในชุด (0.00 วินาที)

กรณีที่ 1: ต่อไปนี้คือตัวอย่างการนับ (*) ที่มีค่าว่างในการนับด้วย:

mysql> เลือกจำนวน (*) จาก ifNotNullDemo;

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

<ก่อนหน้า>+----------+| นับ(*) |+----------+| 5 |+----------+1 แถวในชุด (0.02 วินาที)

กรณีที่ 2: ต่อไปนี้เป็นแบบสอบถามสำหรับ count(columnName)

mysql> เลือกจำนวน (ชื่อ) จาก ifNotNullDemo;

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

<ก่อนหน้า>+-------------+| นับ(ชื่อ) |+-------------+| 4 |+-------------+1 แถวในชุด (0.00 วินาที)