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

จะรับระเบียนสุดท้ายที่สองจากตารางใน MySQL ได้อย่างไร


หากต้องการรับระเบียนก่อนระเบียนสุดท้าย เช่น ระเบียนสุดท้ายที่สองใน MySQL คุณต้องใช้ข้อความค้นหาย่อย

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

SELECT *FROM(เลือก *FROM yourTableName ORDER BY yourIdColumnName DESC LIMIT 2)anyAliasNameORDER BY yourIdColumnName LIMIT 1;

ให้เราสร้างตารางก่อน แบบสอบถามในการสร้างตารางมีดังนี้

mysql> สร้างตาราง lastRecordBeforeLastOne -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT PRIMARY KEY, -> Name varchar(20) DEFAULT 'John', -> Age int DEFAULT 18 -> );Query OK, 0 แถวได้รับผลกระทบ ( 0.79 วินาที)

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

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

mysql> แทรกลงในค่า lastRecordBeforeLastOne (); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.21 วินาที) mysql> แทรกลงในค่า lastRecordBeforeLastOne (ชื่อ, อายุ) ('Larry', 23); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.19 วินาที )mysql> แทรกค่า lastRecordBeforeLastOne(Name,Age)('Mike',19);Query OK, 1 แถวได้รับผลกระทบ (0.20 วินาที)mysql> แทรกลงในค่า lastRecordBeforeLastOne(Name,Age)('Sam',24);Query ตกลง 1 แถวได้รับผลกระทบ (0.22 วินาที) mysql> แทรกลงในค่า lastRecordBeforeLastOne (ชื่อ, อายุ) ('Bob',26); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.13 วินาที) mysql> แทรกลงในค่า LastRecordBeforeLastOne (ชื่อ, อายุ) ( 'David',22);ตกลง, 1 แถวได้รับผลกระทบ (0.23 วินาที)mysql> แทรกลงในค่าล่าสุด LastRecordBeforeLastOne (ชื่อ, อายุ) ('James',29); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.14 วินาที) mysql> แทรกลงใน lastRecordBeforeLastOne(Name,Age) values('Carol',21);Query OK, 1 แถวที่ได้รับผลกระทบ (0.23 วินาที)mysql> แทรกลงในค่า lastRecordBeforeLastOne(Name,Age)('Maxwell',29);Query OK, 1 แถวได้รับผลกระทบ (0.18 วินาที) mysql> แทรกใน lastRecordBeforeLastOne(Name,Age) va lues('Chris',25);Query OK, 1 แถวได้รับผลกระทบ (0.14 วินาที)

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

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

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

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

<ก่อนหน้า>+----+---------+------+| รหัส | ชื่อ | อายุ |+----+---------+------+| 1 | จอห์น | 18 || 2 | แลร์รี่ | 23 || 3 | ไมค์ | 19 || 4 | แซม | 24 || 5 | บ๊อบ | 26 || 6 | เดวิด | 22 || 7 | เจมส์ | 29 || 8 | แครอล | 21 || 9 | แม็กซ์เวลล์ | 29 || 10 | คริส | 25 |+----+---------+------+10 แถวในชุด (0.00 วินาที)

นี่คือแบบสอบถามเพื่อรับบันทึกสุดท้ายที่สองใน MySQL

mysql> SELECT *FROM -> (SELECT *FROM lastRecordBeforeLastOne ORDER BY Id DESC LIMIT 2) tbl1 -> ORDER BY Id LIMIT 1;

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

<ก่อนหน้า>+----+---------+------+| รหัส | ชื่อ | อายุ |+----+---------+------+| 9 | แม็กซ์เวลล์ | 29 |+----+---------+------+1 แถวในชุด (0.00 วินาที)