2013-09-29 82 views
0

内如果我有一组存储在表列好比说数字1,60,71我怎样才能让我的SQL来遍历集合使用数字的同时或在存储过程中一些其他的方法?循环MySQL的存储过程

我喜欢做

Loop throught 1,60 and 71 
Update row where id = 1,60 and 71 with my data. 

我希望你的想法。

编辑: 表之前更新

"id" "total" "vals" 
"1"  "0"  "" 
"2"  "0"  "" 
"3"  "0"  "" 
"4"  "0"  "1,2,3" 

后更新

"id" "total" "vals" 
"1"  "1"  "" 
"2"  "1"  "" 
"3"  "2"  "" 
"4"  "0"  "1,2,3" 

由于id 4vals1,2,3 - 行ID为1,2,3已经通过+1已更新

唯一的问题是要直通每个在丘壑字符串值,并通过+1

+0

什么是实际的更新语句。也许你可以在1步中完成 –

+0

在UPDATE语句中加入JOIN。 – Barmar

+0

@juergend 1,60,70作为一个字符串存储在表中(如果它使事情变得更容易,我不会改变它)。实际更新是:更新表中设定总=总+ 1其中id = 1,然后将所有其他的数字在该字符串(60然后70) – jmenezes

回答

1

更新相应的行使用JOIN,而不是一个循环:

UPDATE Table t1 
JOIN Table t2 
ON FIND_IN_SET(t1.id, t2.vals) 
SET t1.total = t1.total + 1 
WHERE t2.id = 4 
+0

即问题是,'1,60,71'被存储为一个字符串一列,而不是单独的行。 – jmenezes

+0

我修订我的答案使用FIND_IN_SET – Barmar

+0

我已经编辑我的问题,所以你会看到什么,我试图做的。 – jmenezes