需要在MySQL 5.7.30中使用动态生成的OR参数值构建查询



我使用MySQL版本5.7.30。我想创建一个过程,它将动态地生成这个查询到MySQL数据库SELECT * FROM stories WHERE stories.user_id = 67 OR stories.user_id = 68 OR stories.user_id = 71 OR stories.user_id = 55 OR stories.user_id = 56

在下面的过程中,对于某一类输入值的变量"是67 68 71 55 56作为字符串。变量"count_csv"5 .

从以下逗号分隔的值,我想动态地生成这个查询SELECT * FROM stories WHERE stories.user_id = 67 OR stories.user_id = 68 OR stories.user_id = 71 OR stories.user_id = 55 OR stories.user_id = 56

请帮帮我。我是MySql的新手。

DELIMITER $$
CREATE PROCEDURE auto_newsfeed(
IN
userid BIGINT)
BEGIN
DECLARE following VARCHAR(100);
DECLARE count_csv INT;
DECLARE x INT;
SET  x = 0;

SELECT GROUP_CONCAT(user_id) INTO following
FROM followers WHERE follower_id = userid;


SELECT LENGTH(following) - LENGTH(REPLACE(following, ',', '')) + 1 INTO count_csv;
SELECT * FROM stories WHERE user_id = (or_adder : LOOP
IF X >= count_csv
THEN
LEAVE or_adder;
END IF;
SET x = x +1;

END LOOP;
END $$
DELIMITER ;

看起来你要做的就是:

select stories.*
from followers
join stories on stories.user_id=followers.user_id
where followers.follower_id=?

我不认为这里需要存储过程或动态生成sql。

最新更新