วิธีทำให้ MySQL return count 0 กรณีที่ Query แล้วไม่พบข้อมูล

โดยปรกติ เวลาที่เราทำการ Query จาก MySQL แล้วมีการ คำสั่งในการคำนวณค่า เล่น Count , Sum เป็นต้น ถ้าหากกรณีที่ไม่พขข้อมูลตามเงื่อนไข จะทำให้ไม่ return result ออกมาเลย
แล้วถ้าหากเราต้องการให้ return record ที่ value =0 ออกมาล่ะต้องทำอย่างไร

ตัวอย่าง
select count(*) cnt from test_table where  c_type='test' ;

กรณีนี้ถ้า มี record ที่ c_type = test อยู่ก็จะ return จำนวน record ออกมา
แต่ถ้าไม่มี จะไม่ได้ result ออกมาเลย   
เทคนิคง่ายๆ ในการให้ ได้ result ที่ cnt =0 ก็คือให้เราทำการ union เพิ่มนั่นเอง เช่น

select count(*) cnt from test_table where  c_type='test' 
union select 0 cnt;

ลองดูนะครับ ผลที่ได้ ถ้าหาก count ไม่เจอ ยังไงก็  return 0 ครับ 

แต่ก็จะเจอปัญหา ถ้าหาก query เจอ type= test จะทำให้ return 2 record 
คือจำนวนตามที่เจอในเงื่อนไข และก็ อีก record คือ 0 แนวทางแก้คือ เอา SUM ครอบอีกชั้นก็ได้ครับ
เช่นตามตัวอย่าง

select sum(cnt) from (
select count(*) cnt from test_table where  c_type='test' 
union select 0 cnt) x;

ยังไงก็ลองประยุกต์ใช้กันตามความเหมาะสมนะครับ

ความคิดเห็น

แสดงความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

Oracle date format จัด format date ให้แสดง พศ และ เดือน ภาษาไทยหรือตามภาษาที่เราเลือก

java -Xms , java -Xmx กำหมด memory ให้ JVM เพื่อป้องกันปัญหา Out of Memory

Java this กับ super การใช้งานคำสั่ง this กับ super ใน ภาษา Java