我有这样的数组
text_id_array=["1011", "1012", "1013"]
我想将它传递给更新列的mysql过程,它与数组成员匹配,所以我试过
BEGIN
UPDATE chat_texts a SET a.read_by=a.read_by+1 WHERE a.text_id IN (text_id_array);
END
但它仅适用于数组 1011 的第一个成员。我知道有很多问题,但我无法找到解决方案。谢谢你的帮助!
答案 0 :(得分:2)
如果您对使用非数组方法感兴趣,FIND_IN_SET可能会有所帮助。
这可能会帮助您入门:
SET @strIDs ="1011,1012,1013"
UPDATE chat_texts a SET a.read_by=a.read_by+1 WHERE FIND_IN_SET(a.text_id, @strIDs);
答案 1 :(得分:1)
现在我找到了。感谢您推荐使用 FIND_IN_SET ,但我也注意到我应该将我的参数更改为 VARCHAR 。它就是
CREATE DEFINER=`root`@`localhost` PROCEDURE `aa`(IN `text_array_id` VARCHAR(255))
BEGIN
UPDATE chat_texts a SET a.read_by=a.read_by+1 WHERE FIND_IN_SET(a.text_id, text_array_id);
END