[英]Stored Procedure with a IN statement (mysql)
我有一個查詢
Select id,name,... FROM table WHERE id IN (?)
使用聯接和另一個具有相同ID的(?),查詢實際上更加復雜。 我被告知將其放在存儲過程中,以使其更易於管理和安全,但是mysql不支持數組,因此我不確定這樣做是最好的方法,因此我不確定知道我必須通過多少個ID。 我見過有人通過弦。 這是唯一的方法嗎?
您可以使用臨時表。 盡管此答案的投票不高,所以我認為使用字符串參數是首選方法(17票對2票)(請參閱鏈接)。 臨時表的答案來自另一個問題:將數組傳遞給MySQL存儲例程
對臨時表使用聯接。 您不需要將臨時表傳遞給函數,它們是全局的。
create temporary table ids( id int ) ;
insert into ids values (1),(2),(3) ;
delimiter //
drop procedure if exists tsel //
create procedure tsel() -- uses temporary table named ids. no params
READS SQL DATA
BEGIN
-- use the temporary table `ids` in the SELECT statement or
-- whatever query you have
select * from Users INNER JOIN ids on userId=ids.id ;
END //
DELIMITER ;
CALL tsel() ; -- call the procedure
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.