1

特定の行数(id_sample = '2')に対して+1値ずつ自動インクリメントする列を持つMySQLテーブルがあります。あなたはどう思いますか、私はこれを単一のクエリでアーカイブすることができます、または私は行ごとに更新する必要があります:(。私のテーブルの短いプレビューは次のとおりです:

+----------+----------+---------+
| 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 に答える