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

วิธีใช้จำนวนแถวจริง (COUNT (*)) ในส่วนคำสั่ง WHERE โดยไม่ต้องเขียนแบบสอบถามเดียวกันกับแบบสอบถามย่อยใน MySql


บรรลุสิ่งนี้ด้วยความช่วยเหลือของส่วนคำสั่งที่

ไวยากรณ์มีดังนี้

SELECT yourColumnName1,yourColumnName2,...N จาก yourTableNameWHERE( SELECT COUNT(*) FROM yourTableName)=2;

เพื่อให้เข้าใจแนวคิด ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้

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

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

แบบสอบถามมีดังนี้

mysql> แทรกลงในค่า CountWithSubqueryDemo(EmployeeName) ('John');Query OK, 1 แถวได้รับผลกระทบ (0.54 วินาที)mysql> แทรกลงใน CountWithSubqueryDemo(EmployeeName) values(NULL); Query OK, 1 แถวได้รับผลกระทบ (0.36 วินาที )mysql> แทรกลงในค่า CountWithSubqueryDemo(EmployeeName) ('Carol');Query OK, 1 แถวได้รับผลกระทบ (0.23 วินาที)mysql> แทรกลงในค่า CountWithSubqueryDemo(EmployeeName) (''); Query OK, 1 แถวได้รับผลกระทบ (0.31 วินาที) mysql> แทรกลงในค่า CountWithSubqueryDemo (EmployeeName) ('Bob'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (1.24 วินาที) mysql> แทรกลงใน CountWithSubqueryDemo (EmployeeName) ค่า (NULL); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.30 วินาที) mysql> แทรกลงในค่า CountWithSubqueryDemo(EmployeeName) ('Sam');Query OK, 1 แถวได้รับผลกระทบ (0.18 วินาที)mysql> แทรกลงใน CountWithSubqueryDemo(EmployeeName) values('Mike');Query OK, 1 แถวได้รับผลกระทบ (0.18 วินาที)mysql> แทรกลงในค่า CountWithSubqueryDemo(EmployeeName) ('James');Query OK, 1 แถวได้รับผลกระทบ (0.26 วินาที)

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

แบบสอบถามมีดังนี้

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

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+----+--------------+| รหัส | ชื่อพนักงาน |+----+-------------+| 1 | จอห์น || 2 | NULL || 3 | แครอล || 4 | || 5 | บ๊อบ || 6 | NULL || 7 | แซม || 8 | ไมค์ || 9 | James |+----+-------------+9 แถวในชุด (0.19 วินาที)

ต่อไปนี้คือวิธีที่คุณสามารถใช้การนับแถวจริงในส่วนคำสั่ง

mysql> select Id,EmployeeName from CountWithSubqueryDemo -> where -> ( -> select count(*) from CountWithSubqueryDemo -> )=2;Empty set (0.03 วินาที)

ในแบบสอบถามข้างต้น เราได้รับชุดว่างเนื่องจากจะส่งคืนแถวหากตารางมีเพียงสองระเบียนเท่านั้น ดังนั้น ให้เราลบระเบียนทั้งหมดออกจากตารางและแทรกระเบียน 2 รายการลงในตาราง

แบบสอบถามมีดังนี้

mysql> ตัดทอนตาราง CountWithSubqueryDemo; Query OK, 0 แถวได้รับผลกระทบ (1.95 วินาที)

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

แบบสอบถามมีดังนี้

mysql> แทรกลงในค่า CountWithSubqueryDemo(EmployeeName) ('James');Query OK, 1 แถวได้รับผลกระทบ (0.15 วินาที)mysql> แทรกลงใน CountWithSubqueryDemo(EmployeeName) values(NULL); Query OK, 1 แถวได้รับผลกระทบ (0.46 วินาที) )

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

แบบสอบถามมีดังนี้

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

ต่อไปนี้เป็นผลลัพธ์

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

ต่อไปนี้เป็นแบบสอบถามสำหรับการนับแถวในส่วนที่ข้อ

mysql> เลือก Id,EmployeeName จาก CountWithSubqueryDemo -> โดยที่ -> ( -> เลือก count(*) จาก CountWithSubqueryDemo -> )=2;

ต่อไปนี้เป็นผลลัพธ์

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