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

นับสองคอลัมน์ที่แตกต่างกันในแบบสอบถามเดียวใน MySQL หรือไม่


คุณสามารถใช้คำสั่ง CASE เพื่อนับสองคอลัมน์ที่แตกต่างกันในแบบสอบถามเดียว เพื่อให้เข้าใจแนวคิด ให้เราสร้างตารางก่อน แบบสอบถามเพื่อสร้างตารางมีดังนี้

mysql> สร้างตาราง CountDifferentDemo -> ( -> ProductId int ไม่ใช่ NULL AUTO_INCREMENT PRIMARY KEY, -> ProductName varchar(20), -> ProductColor varchar(20), -> ProductDescription varchar(20) -> );Query OK , ได้รับผลกระทบ 0 แถว (1.06 วินาที)

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

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

mysql> แทรกลงในค่า CountDifferentDemo(ProductName,ProductColor,ProductDescription) ('Product-1','Red','Used');Query OK, 1 แถวได้รับผลกระทบ (0.46 วินาที)mysql> แทรกลงใน CountDifferentDemo(ProductName, ProductColor, ProductDescription) ค่า ('Product-1', 'Blue', 'Used'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.17 วินาที) mysql> แทรกลงในค่า CountDifferentDemo (ProductName, ProductColor, ProductDescription) ('Product-2' ,'เขียว', 'ใหม่');แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.12 วินาที) mysql> แทรกลงในค่า CountDifferentDemo (ProductName, ProductColor, ProductDescription) ('Product-2','Blue','New');Query ตกลง ได้รับผลกระทบ 1 แถว (0.14 วินาที)mysql> แทรกลงในค่า CountDifferentDemo(ProductName,ProductColor,ProductDescription) ('Product-3','Green','New');Query OK, 1 แถวได้รับผลกระทบ (0.21 วินาที)mysql> แทรกค่า CountDifferentDemo(ProductName,ProductColor,ProductDescription) ('Product-4','Blue','Used');Query OK, 1 แถวได้รับผลกระทบ (0.20 วินาที)

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

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

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

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

<ก่อนหน้า>+-----------+-------------+--------------+----- ---------------+| ProductId | ชื่อสินค้า | สินค้าสี | ProductDescription |+-----------+-------------+-------------+------ --------------+| 1 | สินค้า-1 | แดง | สินค้ามือสอง || 2 | สินค้า-1 | สีฟ้า | สินค้ามือสอง || 3 | สินค้า-2 | สีเขียว | ใหม่ || 4 | สินค้า-2 | สีฟ้า | ใหม่ || 5 | สินค้า-3 | สีเขียว | ใหม่ || 6 | สินค้า-4 | สีฟ้า | ใช้แล้ว |+-----------+-------------+--------------+------ --------------+6 แถวในชุด (0.01 วินาที)

นี่คือการสืบค้นเพื่อนับสองคอลัมน์ที่แตกต่างกันในแบบสอบถามเดียว นั่นคือ เรากำลังนับการเกิดขึ้นของสี "แดง" และคำอธิบาย "ใหม่"

mysql> เลือก ProductName, -> SUM(CASE WHEN ProductColor ='Red' แล้ว 1 ELSE 0 END) AS Color, -> SUM(CASE WHEN ProductDescription ='New' THEN 1 ELSE 0 END) AS Desciption -> from CountDifferentDemo -> จัดกลุ่มตามชื่อผลิตภัณฑ์;

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

<ก่อนหน้า>+-------------+-------+-----------+| ชื่อสินค้า | สี | คำอธิบาย |+-------------+-------+-----------+| สินค้า-1 | 1 | 0 || สินค้า-2 | 0 | 2 || สินค้า-3 | 0 | 1 || สินค้า-4 | 0 | 0 |+-------------+-------+-----------+4 แถวในชุด (0.12 วินาที)