我有一个存储过程,其参数为IN id_list VARCHAR(65535)
(由于无法将数组作为参数传递)。 id_list
是一个内爆(胶水是逗号符号)整数数组。我这样用过:
CREATE PROCEDURE `some_procedure`(IN `id_list` VARCHAR(65535))
BEGIN
SET @`query`:= CONCAT(
'SELECT
*
FROM
`table` AS `tbl`
WHERE
`tbl`.`id` IN (',`id_list`,')');
PREPARE `statement` FROM @`query`;
EXECUTE `statement`;
END$$
但是如何在临时表中选择id_list
值以便将来与其他表联接?
答案 0 :(得分:-1)
您可以使用MySQL函数FIND_IN_SET。
CREATE PROCEDURE `some_procedure` (IN `id_list` VARCHAR(65535))
BEGIN
SELECT id
FROM table
WHERE FIND_IN_SET(id, id_list);
END
但要注意长权重表,因为FIND_IN_SET忽略了你的表索引。
希望它有所帮助。