วิธีทำให้ 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;

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

ความคิดเห็น

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

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

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

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

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