SQL มีการดำเนินการประเภทต่างๆ ที่ใช้ในการสอบถามไปยังฐานข้อมูล คำสั่ง HAVING ของ SQL ทำงานเหมือนกับแบบสอบถามย่อยที่ด้านบนของแบบสอบถามเริ่มต้น ใช้งานได้ดีเมื่อคุณมีรายการจำนวนมากที่มีค่าเหมือนกัน และคุณต้องการกรองเพิ่มเติม ในบทความนี้ เราจะมาดูวิธีการทำงานกัน
การเตรียมตัว
ใน SQL Fiddle นี้โดยใช้ MySQL ฉันได้สร้างสคีมาตัวอย่างที่ใช้สำหรับตัวอย่างเหล่านี้
create table Cars ( id INT PRIMARY KEY, year VARCHAR(50), car_make VARCHAR(50), car_model VARCHAR(50) );
สิ่งนี้จะสร้างตารางที่เรียกว่า "รถยนต์" และมีสคีมาที่พิจารณารุ่นและปีของรถยนต์แต่ละคัน บล็อกถัดไปแทรกค่าลงในคอลัมน์เหล่านั้น:
insert into Cars (id, year, car_make, car_model) values (1, 2011, 'Mazda', 'Miata MX-5'); insert into Cars (id, year, car_make, car_model) values (2, 1969, 'Ford', 'Mustang'); insert into Cars (id, year, car_make, car_model) values (3, 2007, 'Toyota', '4Runner'); insert into Cars (id, year, car_make, car_model) values (4, 2013, 'Porsche', '911'); insert into Cars (id, year, car_make, car_model) values (5, 1991, 'Buick', 'Coachbuilder'); insert into Cars (id, year, car_make, car_model) values (6, 2007, 'Kia', 'Sportage'); insert into Cars (id, year, car_make, car_model) values (7, 1997, 'Oldsmobile', 'Cutlass Supreme'); insert into Cars (id, year, car_make, car_model) values (8, 2003, 'BMW', '7 Series'); insert into Cars (id, year, car_make, car_model) values (9, 1996, 'Ford', 'F150'); insert into Cars (id, year, car_make, car_model) values (10, 1992, 'Suzuki', 'SJ'); insert into Cars (id, year, car_make, car_model) values (11, 2001, 'Jeep', 'Grand Cherokee'); insert into Cars (id, year, car_make, car_model) values (12, 2000, 'Ford', 'F250'); insert into Cars (id, year, car_make, car_model) values (13, 2003, 'Honda', 'Insight'); insert into Cars (id, year, car_make, car_model) values (14, 2006, 'Chevrolet', 'HHR Panel'); insert into Cars (id, year, car_make, car_model) values (15, 1987, 'Mercedes-Benz', 'S-Class'); insert into Cars (id, year, car_make, car_model) values (16, 2004, 'Chevrolet', 'SSR'); insert into Cars (id, year, car_make, car_model) values (17, 1990, 'Maserati', '228'); insert into Cars (id, year, car_make, car_model) values (18, 2005, 'Saturn', 'Ion'); insert into Cars (id, year, car_make, car_model) values (19, 1987, 'Audi', '5000CS'); insert into Cars (id, year, car_make, car_model) values (20, 1999, 'Chevrolet', 'S10'); insert into Cars (id, year, car_make, car_model) values (21, 2007, 'Jeep', 'Liberty'); insert into Cars (id, year, car_make, car_model) values (22, 2002, 'Lamborghini', 'Murciélago'); insert into Cars (id, year, car_make, car_model) values (23, 2000, 'Hyundai', 'Tiburon'); insert into Cars (id, year, car_make, car_model) values (24, 2011, 'Jeep', 'Patriot'); insert into Cars (id, year, car_make, car_model) values (25, 1985, 'Pontiac', 'Sunbird');
หากคุณต้องการจำลองข้อมูลของคุณเองสำหรับแบบฝึกหัดนี้ ฉันขอแนะนำให้ใช้ mockaroo.com เพื่อทำเช่นนั้น คุณสามารถจัดโครงสร้างสคีมาฐานข้อมูลของคุณได้ง่ายๆ โดยใช้วิธีนี้
วิธีใช้การมี
SELECT COUNT(id), car_make FROM Cars GROUP BY car_make HAVING COUNT(id) > 0;
ใช้ HAVING เมื่อคุณต้องการใช้ฟังก์ชันการรวมและไม่สามารถใช้ส่วนคำสั่ง WHERE ได้ ฟังก์ชันรวมคือฟังก์ชันที่ดำเนินการบางประเภทและส่งกลับค่าเดียว คิดว่า COUNT, AVG หรือ SUM รหัสด้านบนส่งคืน:
COUNT(id) | car_make |
1 | ออดี้ |
1 | บีเอ็มดับเบิลยู |
1 | บูอิค |
3 | เชฟโรเลต |
3 | ฟอร์ด |
1 | ฮอนด้า |
1 | ฮุนได |
3 | รถจี๊ป |
1 | เกีย |
1 | แลมโบกินี่ |
1 | มาเซราติ |
1 | มาสด้า |
1 | เมอร์เซเดส-เบนซ์ |
1 | Oldsmobile |
1 | รถปอนเตี๊ยก |
1 | ปอร์เช่ |
1 | ดาวเสาร์ |
1 | ซูซูกิ |
1 | โตโยต้า |
เราใช้คำสั่ง select เพื่อคว้า sql COUNT ของ car_makes ที่มีอยู่และจัดกลุ่มตามส่วนคำสั่งเพื่อแยกโดย car_make
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
นั่นคือทั้งหมดที่มีให้! เพื่อเป็นการเตือนความจำ คำสั่งย่อย HAVING ในแบบสอบถาม SQL เป็นตัวกรองย่อยที่ใช้ฟังก์ชันการรวมเพื่อดำเนินการค้นหาเพิ่มเติมบางอย่างในฐานข้อมูล
ทดลองกับฟังก์ชันการรวมอื่นๆ เพื่อเพิ่มความรู้เกี่ยวกับอนุประโยคที่ไม่เหมือนใครนี้!