具有来自同一表的多个SELECT FROM语句的MySQL存储过程

时间:2020-05-06 12:27:01

标签: php mysql stored-procedures

我有一个名为“ thumb”的表,其中包含图像的相对路径以及与图像相关的其他数据(例如其标题和说明)。我正在工作的网站的每个页面代表不同类别的图像。现在,我对每个页面(类别)都有单独的存储过程,以根据其ID选择不同的图像。是否可以为每个页面(类别)使用一个存储过程来选择不同的图像,或者我需要为每个图像范围创建单独的存储过程?

现在是这样的: “所有作品”页面的步骤:

BEGIN
SELECT * FROM thumb ORDER BY id ASC;
END

“绘画”程序:

BEGIN
SELECT * FROM thumb WHERE id BETWEEN 12 AND 15 ORDER BY id ASC;
END

“图纸”的程序:

BEGIN
SELECT * FROM thumb WHERE id BETWEEN 16 AND 19 ORDER BY id ASC;
END

等等。

存储过程是否可以侦听调用的来源以及if语句决定要应用哪个SELECT * FROM语句?

1 个答案:

答案 0 :(得分:1)

您需要类似的东西

CREATE PROCEDURE get_images (IN pagetype TEXT)
SELECT * 
FROM thumb 
WHERE CASE pagetype WHEN 'Paintings' THEN id BETWEEN 12 AND 15
                    WHEN 'Drawings'  THEN id BETWEEN 16 AND 19 
                                     ELSE TRUE
                                     END
ORDER BY id ASC;