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

การลบแถวทั้งหมดที่เก่ากว่า 5 วันใน MySQL


หากต้องการลบแถวทั้งหมดที่เก่ากว่า 5 วัน คุณสามารถใช้ไวยากรณ์ต่อไปนี้ -

ลบออกจาก yourTableName โดยที่ datediff(now(), yourTableName.yourDateColumnName)> 5;

หมายเหตุ − สมมติว่าวันที่ปัจจุบันคือ 2019-03-10

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

mysql> สร้างตาราง deleteRowsOlderThan5Demo -> ( -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> Name varchar(100), -> Post_Date date -> );Query OK, 0 แถวได้รับผลกระทบ (0.69 วินาที)

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

mysql> แทรกลงใน deleteRowsOlderThan5Demo(Name,Post_Date) ค่า ('Larry','2019-03-11'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.12 วินาที)mysql> แทรกลงในค่า deleteRowsOlderThan5Demo (ชื่อ, Post_Date) ( 'Mike','2019-02-12');แบบสอบถามตกลง, 1 แถวได้รับผลกระทบ (0.17 วินาที)mysql> แทรกลงในค่า deleteRowsOlderThan5Demo (ชื่อ, Post_Date) ('Sam','2019-03-10'); แบบสอบถามตกลง , 1 แถวได้รับผลกระทบ (0.12 วินาที)mysql> แทรกลงใน deleteRowsOlderThan5Demo(Name,Post_Date) ค่า ('Carol','2019-03-01'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.23 วินาที) mysql> แทรกลงใน deleteRowsOlderThan5Demo (ชื่อ ,Post_Date) ค่า ('David','2019-01-31');แบบสอบถามตกลง, 1 แถวได้รับผลกระทบ (0.19 วินาที)mysql> แทรกลงในค่า deleteRowsOlderThan5Demo (ชื่อ, Post_Date) ('Maxwell','2019-01-26 ');แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.10 วินาที)mysql> แทรกลงในค่า deleteRowsOlderThan5Demo(Name,Post_Date) ('John','2019-02-19');Query OK, 1 แถวได้รับผลกระทบ (0.12 วินาที) 

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

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

นี่คือผลลัพธ์ -

<ก่อนหน้า>+----+---------+-----------+| รหัส | ชื่อ | Post_Date |+----+---------+-----------+| 1 | แลร์รี่ | 2019-03-11 || 2 | ไมค์ | 2019-02-12 || 3 | แซม | 2019-03-10 || 4 | แครอล | 2019-03-01 || 5 | เดวิด | 2019-01-31 || 6 | แม็กซ์เวลล์ | 2019-01-26 || 7 | จอห์น | 2019-02-19 |+----+---------+-----------+7 แถวในชุด (0.00 วินาที)

นี่คือข้อความค้นหาที่จะลบแถวทั้งหมดที่เก่ากว่า 5 วัน -

mysql> ลบจาก deleteRowsOlderThan5Demo -> โดยที่ datediff(now(), deleteRowsOlderThan5Demo.Post_Date)> 5; สืบค้น OK, 5 แถวได้รับผลกระทบ (0.14 วินาที)

ให้เราตรวจสอบบันทึกตารางอีกครั้ง แบบสอบถามมีดังนี้ −

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

นี่คือผลลัพธ์ -

<ก่อนหน้า>+----+-------+-----------+| รหัส | ชื่อ | Post_Date |+----+-------+-----------+| 1 | แลร์รี่ | 2019-03-11 || 3 | แซม | 2019-03-10 |+----+-------+-----------+2 แถวในชุด (0.00 วินาที)