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

การทำงานกับ WHERE IN() ใน MySQL Stored Procedure


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

mysql> สร้างตาราง DemoTable -> ( -> Id int, -> Name varchar(20) -> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.69 วินาที)

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

mysql> แทรกลงในค่า DemoTable (100,'Chris'); Query OK, 1 แถวได้รับผลกระทบ (0.12 วินาที)mysql> แทรกลงในค่า DemoTable (101,'Bob'); Query OK, 1 แถวได้รับผลกระทบ (0.18 วินาที )mysql> แทรกลงในค่า DemoTable (102,'David'); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.18 วินาที)

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

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

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

<ก่อนหน้า>+------+-------+| รหัส | ชื่อ |+------+-------+| 100 | คริส || 101 | บ๊อบ || 102 | David |+------+-------+3 แถวในชุด (0.00 วินาที)

นี่คือแบบสอบถามเพื่อสร้างขั้นตอนการจัดเก็บเพื่อใช้ WHERE IN() -

mysql> DELIMITER //mysql> CREATE PROCEDURE โดยที่ InDemo (ในอินพุต varchar (100)) -> BEGIN -> ตั้งค่า @Query ='เลือกชื่อจาก DemoTable'; -> ตั้งค่า @Query =CONCAT(@Query,' where Id IN (',`input',')'); -> เตรียม stmt จาก @Query; -> ดำเนินการ stmt; -> จัดสรรคืนเตรียม stmt; -> END //แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.23 วินาที)mysql> DELIMITER;

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

mysql> call whereInDemo('100,102');

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

<ก่อนหน้า>+-------+| ชื่อ |+-------+| คริส || David |+-------+2 แถวในชุด (0.04 วินาที) ตกลง ตกลง 0 แถวได้รับผลกระทบ 1 คำเตือน (0.07 วินาที)