【发布时间】:2018-02-27 09:51:39
【问题描述】:
我有一个在 php 中构建的 MySQL 查询,但想移动到存储过程中。整个查询都可以移到存储过程中,除了一个复杂的问题:在 php 中,根据条件,我添加一个“HAVING ......”作为最后一行。是否可以做一个条件、案例等以类似的方式构建查询?
例如:
PROCEDURE `GeyMyItems`(
IN query VARCHAR(100)
)
BEGIN
SELECT * FROM my_table a
JOIN another_table b ON a.id = b.id
WHERE my_column = 'this_value'
IF (query = 'abc')
HAVING a.my_value = '123';
END$$
DELIMITER ;
我知道IF 的语法可能是错误的,但我只是在展示我正在尝试做的事情。有没有更好的方法来做到这一点?
我能想到的唯一退路可能是处理 php.ini 中的HAVING 部分。只是根本不将它包含在 SQL 中,当我构建我的对象/数组时,我可以在我的 while 循环中过滤。但我想看看如何将存储过程用于这样的事情,如果有的话?
【问题讨论】:
标签: mysql sql stored-procedures conditional