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

MySQL GROUP BY โดยที่ส่วนคำสั่งและเงื่อนไขมีค่ามากกว่า 1?


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

mysql> สร้างตาราง GroupByWithWhereClause -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT, -> IsDeleted tinyint(1), -> MoneyStatus varchar(20), -> UserId int, -> PRIMARY KEY(Id) -> );แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.57 วินาที)

ตอนนี้คุณสามารถแทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามมีดังนี้ −

mysql> แทรกลงในค่า GroupByWithWhereClause(IsDeleted,MoneyStatus,UserId)(0,'Undone',101);Query OK, 1 แถวที่ได้รับผลกระทบ (0.17 วินาที)mysql> แทรกลงในค่า GroupByWithWhereClause(IsDeleted,MoneyStatus,UserId) ( 0,'done',101); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.19 วินาที) mysql> แทรกลงในค่า GroupByWithWhereClause (IsDeleted, MoneyStatus, UserId) (0,'done',101); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.14) sec)mysql> แทรกลงใน GroupByWithWhereClause (IsDeleted, MoneyStatus, UserId) ค่า (0,'done',102); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.18 วินาที) mysql> แทรกลงในค่า GroupByWithWhereClause (IsDeleted, MoneyStatus, UserId) (1 ,'Undone',102);แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.20 วินาที)mysql> แทรกลงในค่า GroupByWithWhereClause (IsDeleted, MoneyStatus, UserId) (1,'done',102); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.59 วินาที )mysql> แทรกลงใน GroupByWithWhereClause (IsDeleted, MoneyStatus, UserId) ค่า (0,'Undone',103); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงในค่า GroupByWithWhereClause (IsDeleted, MoneyStatus, UserId) (0, 'เสร็จสิ้น',103); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.20 วินาที) mysql> แทรกลงใน GroupByWithWhereClause (IsDeleted, MoneyStatus, UserId) ค่า (0,'done',103); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.18 วินาที) mysql> แทรกลงใน GroupByWithWhereClause (IsDeleted) ,MoneyStatus,UserId) ค่า(0,'done',103);แบบสอบถามตกลง, 1 แถวได้รับผลกระทบ (0.10 วินาที)mysql> แทรกลงใน GroupByWithWhereClause(IsDeleted,MoneyStatus,UserId) ค่า(0,'done',104);แบบสอบถาม ตกลง 1 แถวได้รับผลกระทบ (0.14 วินาที)mysql> แทรกลงใน GroupByWithWhereClause(IsDeleted,MoneyStatus,UserId) ค่า (0,'Undone',104); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.12 วินาที) mysql> แทรกลงใน GroupByWithWhereClause (IsDeleted, MoneyStatus, UserId) ค่า (1,'Undone',105) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงใน GroupByWithWhereClause (IsDeleted, MoneyStatus, UserId) ค่า (1,'done',105); แบบสอบถามตกลง , 1 แถวได้รับผลกระทบ (0.26 วินาที)mysql> แทรกลงในค่า GroupByWithWhereClause(IsDeleted,MoneyStatus,UserId) (1,'done',105); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.12 วินาที) mysql> แทรกลงใน GroupByWithWhereClause (IsDeleted, MoneyStatus ,ยู serId) ค่า (0,'done',105); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.24 วินาที) mysql> แทรกลงใน GroupByWithWhereClause (IsDeleted, MoneyStatus, UserId) ค่า (0, 'เลิกทำ', 106); แบบสอบถามตกลง 1 แถวที่ได้รับผลกระทบ (0.23 วินาที)mysql> แทรกลงในค่า GroupByWithWhereClause (IsDeleted, MoneyStatus, UserId) ค่า (0,'done',106); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที) mysql> แทรกลงใน GroupByWithWhereClause (IsDeleted, MoneyStatus, UserId ) values(0,'done',106);ตกลง, 1 แถวได้รับผลกระทบ (0.14 วินาที)

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

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

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

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

<ก่อนหน้า>+----+-----------+-------------+---------+| รหัส | IsDeleted | MoneyStatus | รหัสผู้ใช้ |+----+-----------+-------------+--------+| 1 | 0 | เลิกทำ | 101 || 2 | 0 | เสร็จแล้ว | 101 || 3 | 0 | เสร็จแล้ว | 101 || 4 | 0 | เสร็จแล้ว | 102 || 5 | 1 | เลิกทำ | 102 || 6 | 1 | เสร็จแล้ว | 102 || 7 | 0 | เลิกทำ | 103 || 8 | 0 | เสร็จแล้ว | 103 || 9 | 0 | เสร็จแล้ว | 103 || 10 | 0 | เสร็จแล้ว | 103 || 11 | 0 | เสร็จแล้ว | 104 || 12 | 0 | เลิกทำ | 104 || 13 | 1 | เลิกทำ | 105 || 14 | 1 | เสร็จแล้ว | 105 || 15 | 1 | เสร็จแล้ว | 105 || 16 | 0 | เสร็จแล้ว | 105 || 17 | 0 | เลิกทำ | 106 || 18 | 0 | เสร็จแล้ว | 106 || 19 | 0 | เสร็จแล้ว | 106 |+----+-----------+-------------+-------+19 แถวในชุด (0.00 วินาที )

นี่คือข้อความค้นหา GROUP BY โดย WHERE clause −

mysql> SELECT * FROM GroupByWithWhereClause -> WHERE IsDeleted=0 AND MoneyStatus='done' -> GROUP BY SUBSTR(UserId,1,3) -> HAVING COUNT(*)> 1 -> ORDER BY Id DESC;

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

<ก่อนหน้า>+----+-----------+-------------+---------+| รหัส | IsDeleted | MoneyStatus | รหัสผู้ใช้ |+----+-----------+-------------+--------+| 18 | 0 | เสร็จแล้ว | 106 || 8 | 0 | เสร็จแล้ว | 103 || 2 | 0 | เสร็จแล้ว | 101 |+----+-----------+-------------+---------+3 แถวในชุด (0.00 วินาที )