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

รับคำสั่งซื้ออื่นหลังจาก จำกัด ด้วย MySQL หรือไม่


คุณต้องใช้แบบสอบถามย่อยกับคำสั่ง select หนึ่งตัวเลือกสำหรับภายในและอีกรายการสำหรับภายนอก การเลือกภายในจะส่งกลับแถวและด้านนอกจะเรียงลำดับจากน้อยไปหามาก ไวยากรณ์มีดังนี้:

SELECT *FROM( SELECT *FROM yourTableName ORDER BY yourColumnName1 DESC LIMIT 9) AS anyAliasNameORDER BY yourColumnName2;

เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้:

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

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

mysql> แทรกลงใน OrderByAfterLimit(UserName, UserAge) values('John',23);Query OK, 1 แถวได้รับผลกระทบ (0.24 วินาที)mysql> แทรกลงใน OrderByAfterLimit(UserName, UserAge) values('Larry',21);แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.36 วินาที)mysql> แทรกลงใน OrderByAfterLimit (ชื่อผู้ใช้ UserAge) ค่า ('Bob',26); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.19 วินาที) mysql> แทรกลงใน OrderByAfterLimit (ชื่อผู้ใช้ UserAge) ค่า ('James',22); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.18 วินาที) mysql> แทรกลงใน OrderByAfterLimit (ชื่อผู้ใช้ UserAge) ค่า ('Robert', 28); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.20 วินาที) mysql> แทรกลงในค่า OrderByAfterLimit (ชื่อผู้ใช้ UserAge) ('Mike', 29); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.19 วินาที) mysql> แทรกลงในค่า OrderByAfterLimit (ชื่อผู้ใช้ UserAge) ('Carol', 24); แบบสอบถามตกลง 1 แถวที่ได้รับผลกระทบ (0.13 วินาที)mysql> แทรกลงในค่า OrderByAfterLimit (ชื่อผู้ใช้ UserAge) ('David', 20); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.23 วินาที) mysql> แทรกลงในค่า OrderByAfterLimit (ชื่อผู้ใช้ UserAge) ('Maxwell' ,30);แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.46 วินาที)

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

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

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

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

นี่คือแบบสอบถามที่จะสั่งซื้อโดยหลังจากขีด จำกัด :

mysql> เลือก *จาก -> ( -> เลือก *จาก OrderByAfterLimit สั่งซื้อโดย UserAge DESC LIMIT 9) AS tbl1 -> สั่งซื้อตามชื่อผู้ใช้

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

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