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

Update Columns With Array (Mysql Procedure)

我有这样的数组

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

如果您对非数组方法感兴趣,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);

现在我找到了。感谢您推荐使用 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