使用数组更新列(Mysql过程)

时间:2016-02-13 09:01:47

标签: mysql arrays sql-update procedure where-in

我有这样的数组

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 的第一个成员。我知道有很多问题,但我无法找到解决方案。谢谢你的帮助!

2 个答案:

答案 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