回答編集履歴
3
回答追記&追加
test
CHANGED
@@ -11,6 +11,28 @@
|
|
11
11
|
WHERE条件で抽出した単数または複数のレコードをソートした結果の1レコード目のみをアップデートする場合、
|
12
12
|
|
13
13
|
まずは```select keycol from table where filed = xx ORDER BY xxx LIMIT xxx```で、更新対象のキー項目を取得し、取得したキー項目を条件として```update```する必要があるのでは?
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
###「salaryが0の行かつソートした結果の1レコード目にupdateしたいです。。」
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
**レコードを一意に特定できる項目(または項目の組み合わせ)**がありますか?
|
22
|
+
|
23
|
+
これが存在しない(*1)場合は、**質問者さんの要件を満たすのは不可能**です。
|
24
|
+
|
25
|
+
(*1): salaryが0 で他の項目もすべて同じ値のレコードが複数レコード存在する
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
これが存在するのであれば、一度 ```WHERE salary = 0 ORDER BY name LIMIT 1```の条件でレコードを一意に特定できる項目の値を取得し、その値を条件に ```update```すれば実現できます。
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
---
|
34
|
+
|
35
|
+
**別の回答へのコメントで「salaryが0の行かつソートした結果の1レコード目にupdateしたいです。。」とのことなので、以下は適用できない適用できない。**
|
14
36
|
|
15
37
|
|
16
38
|
|
2
追記:更新条件についての追記
test
CHANGED
@@ -8,6 +8,24 @@
|
|
8
8
|
|
9
9
|
|
10
10
|
|
11
|
+
WHERE条件で抽出した単数または複数のレコードをソートした結果の1レコード目のみをアップデートする場合、
|
12
|
+
|
11
13
|
まずは```select keycol from table where filed = xx ORDER BY xxx LIMIT xxx```で、更新対象のキー項目を取得し、取得したキー項目を条件として```update```する必要があるのでは?
|
12
14
|
|
13
15
|
|
16
|
+
|
17
|
+
またはそもそもソートした結果の1レコード目のみを更新する必要など無く、WHERE条件にマッチした全件に対して更新でよいなら ORDER BY以降を削除でよいです。
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
```SQL
|
22
|
+
|
23
|
+
db.update("DBTable", values, "salary = 0", null);
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
```
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
|
1
回答追記
test
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
-
SQLite
|
1
|
+
SQLiteに関しては知見があまりないので間違ってたらすみません。
|
2
|
+
|
3
|
+
|
2
4
|
|
3
5
|
そもそもupdate文に```ORDER BY```や```LIMIT```って使用可能なのでしょうか?
|
6
|
+
|
7
|
+
私は今までいろんなDBMS使用してきましたが可能なものを見たことがありません。
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
まずは```select keycol from table where filed = xx ORDER BY xxx LIMIT xxx```で、更新対象のキー項目を取得し、取得したキー項目を条件として```update```する必要があるのでは?
|
12
|
+
|
13
|
+
|