1

我有一个 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';
4

2 回答 2

3

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

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

受此启发:显示 Rownum 问题 MySQL

于 2013-03-04T10:53:57.587 回答
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);
于 2013-03-04T11:02:04.340 回答