需要在 MySQL 5.7.30 中使用动态生成的 OR 参数值构建查询
Need to Build a Query with Dynamically genarated OR argument values in MySQL 5.7.30
我正在使用 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
的查询。
在下面的程序中,某类变量“following”的输入值是字符串形式的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。
我正在使用 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
的查询。
在下面的程序中,某类变量“following”的输入值是字符串形式的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。