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

เลือกแบบสอบถามโดยใช้ MySQL IN() และหลีกเลี่ยงการเรียงลำดับในนั้น


การใช้ IN() จะเรียงลำดับผลลัพธ์สำหรับฟิลด์เฉพาะ เพื่อหลีกเลี่ยงปัญหานี้ ให้ใช้ ORDER BY และ FIND_IN_SET() สำหรับฟิลด์นี้

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

mysql> สร้างตาราง ProductStock -> ( -> ProductId int, -> ProductName varchar(20), -> ProductQuantity int, -> ProductPrice float -> );Query OK, 0 แถวได้รับผลกระทบ (0.79 วินาที)

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

mysql> แทรกลงในค่า ProductStock (1,'Product-101',10,500.56); ตกลง ตกลง 1 แถวได้รับผลกระทบ (0.20 วินาที)mysql> ลงในค่า ProductStock (25,'Product-111',5,150.00); แบบสอบถาม ตกลง 1 แถวได้รับผลกระทบ (0.21 วินาที) mysql> แทรกลงในค่า ProductStock (67,'Product-311',7,1000.50); ​​แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.60 วินาที) mysql> แทรกลงในค่า ProductStock (55, 'Product -561',8,900.00);แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.24 วินาที)mysql> แทรกลงในค่า ProductStock (75,'Product-221',15,670.56); ตกลง มีผลกับ 1 แถว (0.14 วินาที)

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

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

ผลลัพธ์

<ก่อนหน้า>+-----------+-------------+-----------------+-- --------------+| ProductId | ชื่อสินค้า | ปริมาณสินค้า | ราคาสินค้า |+-----------+-------------+-----------------+--- ----+| 1 | Product-101 | 10 | 500.56 || 25 | Product-111 | 5 | 150 || 67 | Product-311 | 7 | 1000.5 || 55 | Product-561 | 8 | 900 || 75 | Product-221 | 15 | 670.56 |+-----------+-------------+-----------------+--- ------------+5 แถวในชุด (0.00 วินาที)

นี่คือข้อความค้นหาที่ใช้ find_in_set() สำหรับการสืบค้นของคุณ -

mysql> เลือก *จาก ProductStock -> โดยที่ ProductId IN(25,55,67,75,1) -> สั่งซื้อโดย find_in_set(ProductId,'25,55,67,75,1');

ผลลัพธ์

<ก่อนหน้า>+-----------+-------------+-----------------+-- --------------+| ProductId | ชื่อสินค้า | ปริมาณสินค้า | ราคาสินค้า |+-----------+-------------+-----------------+--- ----+| 25 | Product-111 | 5 | 150 || 55 | Product-561 | 8 | 900 || 67 | Product-311 | 7 | 1000.5 || 75 | Product-221 | 15 | 670.56 || 1 | Product-101 | 10 | 500.56 |+-----------+-------------+-----------------+--- ------------+5 แถวในชุด (0.31 วินาที)