如何在MySQL中自动增加+1特定行数

时间:2013-03-04 10:46:40

标签: mysql sql syntax

我有一个带有列的MySQL表,我想为特定行数(其中id_sample ='2')自动递增+1值。你怎么看,我可以通过一个查询归档这个,或者我需要逐行更新:(。 我桌子的简短预览是:

+----------+----------+---------+
| id       | id_sample| degrees |
+----------+----------+---------+
| 361      |    2     |    0    |
| 362      |    2     |    0    |
| 363      |    2     |    0    |
| 364      |    2     |    0    |
| 365      |    2     |    0    |
| 366      |    2     |    0    |
| ...      |  ....    |   ....  |
+----------+----------+---------+

我想将此归档:

+----------+----------+---------+
| id       | id_sample| degrees |
+----------+----------+---------+
| 361      |    2     |    1    |
| 362      |    2     |    2    |
| 363      |    2     |    3    |
| 364      |    2     |    4    |
| 365      |    2     |    5    |
| 366      |    2     |    6    |
| ...      |  ....    |   ....  |
+----------+----------+---------+

我尝试了这个查询(见下文),但我得到了所有行的增量:使用相应的id_sample ='2':

UPDATE myTable SET degrees=degrees+1 WHERE id_sample='2';

2 个答案:

答案 0 :(得分:3)

如果可以使用变量。这是一个解决方案:

SET @rownum=0;
UPDATE myTable SET degrees=(@rownum:=@rownum+1) WHERE id_sample='2';

灵感来自:Display Rownum issue MySQL

答案 1 :(得分:1)

Update mytable a set a.degrees = (select nvl(max(b.degree),0)+1 from mytable b where a.id=b.id and b.id_sample=2);