在存储过程中实现条件 MySQL 查询?
mysqlmysqli database
对于条件 MySQL 查询,您可以在存储过程中使用 IF ELSE 概念。让我们首先创建一个表 −
mysql> create table DemoTable1 ( Id int ); Query OK, 0 rows affected (0.62 sec)
使用 insert 命令在表中插入一些记录 −
mysql> insert into DemoTable1 values(10); Query OK, 1 row affected (0.19 sec) mysql> insert into DemoTable1 values(20); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable1 values(30); Query OK, 1 row affected (0.12 sec)
使用 select 语句显示表中的所有记录 −
mysql> select *from DemoTable1;
这将产生以下输出 −
+------+ | Id | +------+ | 10 | | 20 | | 30 | +------+ 3 rows in set (0.00 sec)
以下是创建第二个表的查询。
mysql> create table DemoTable2 ( Id int ); Query OK, 0 rows affected (1.07 sec)
使用 insert 命令在表中插入一些记录 −
mysql> insert into DemoTable2 values(40); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable2 values(50); Query OK, 1 row affected (0.17 sec) mysql> insert into DemoTable2 values(60); Query OK, 1 row affected (0.11 sec)
使用 select 语句显示表中的所有记录 −
mysql> select *from DemoTable2;
这将产生以下输出 −
+------+ | Id | +------+ | 40 | | 50 | | 60 | +------+ 3 rows in set (0.00 sec)
以下是创建条件 MySQL 查询的存储过程的查询。
mysql> DELIMITER // mysql> CREATE PROCEDURE Conditional_Query(id int) BEGIN IF id >=40 THEN Select * from DemoTable2; ELSE Select * from DemoTable1; END IF; END // Query OK, 0 rows affected (0.21 sec) mysql> DELIMITER ;
现在您可以借助 CALL 命令来调用存储过程 −
mysql> call Conditional_Query(100);
这将产生以下输出 −
+------+ | Id | +------+ | 40 | | 50 | | 60 | +------+ 3 rows in set (0.00 sec) Query OK, 0 rows affected (0.03 sec)
再次调用并传递不同的值 −
mysql> call Conditional_Query(13);
这将产生以下输出 −
+------+ | Id | +------+ | 10 | | 20 | | 30 | +------+ 3 rows in set (0.00 sec) Query OK, 0 rows affected (0.02 sec)