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