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

MySQL ORDER BY ด้วยตัวแปรที่ผู้ใช้กำหนดเป็นตัวเลข?


ให้เราสร้างตารางก่อน -

mysql> สร้างตาราง DemoTable1898 ( Number int ) แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.00 วินาที)

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

mysql> แทรกลงในค่า DemoTable1898 (10); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.00 วินาที) mysql> แทรกลงในค่า DemoTable1898 (70); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.00 วินาที) mysql> แทรกลงในค่า DemoTable1898 ( 30); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.00 วินาที) mysql> แทรกลงในค่า DemoTable1898 (50); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.00 วินาที) mysql> แทรกลงในค่า DemoTable1898 (40); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.00 วินาที)

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

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

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+---------+| เบอร์ |+-------+| 10 || 70 || 30 || 50 || 40 |+-------+5 แถวในชุด (0.00 วินาที)

นี่คือการสืบค้นเพื่อดำเนินการ ORDER BY ด้วยตัวแปรที่ผู้ใช้กำหนดเป็นตัวเลข -

mysql> set @limitValue:=1;Query OK, 0 แถวได้รับผลกระทบ (0.00 วินาที)mysql> set @query:=CONCAT('select * from DemoTable1898 order by ',@limitValue);Query OK, 0 แถวได้รับผลกระทบ (0.00 วินาที) mysql> เตรียม stmt จาก @query; Query OK, 0 แถวได้รับผลกระทบ (0.00 วินาที) คำสั่งที่เตรียมไว้ mysql> ดำเนินการ stmt;

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+---------+| เบอร์ |+-------+| 10 || 30 || 40 || 50 || 70 |+-------+5 แถวในชุด (0.00 วินาที)

นี่คือแบบสอบถามเพื่อจัดสรรคืนแบบสอบถามเตรียม -

mysql> deallocate prepare stmt;Query OK, 0 แถวได้รับผลกระทบ (0.00 วินาที)