0
私は3つのテーブルを持っています。 そのうちの1つにusers_dataが格納されています。MySQLは1つのクエリですべてのデータとUPDATEを選択します
私は、このSQLコードを実行します。
SELECT @rownum := @rownum + 1 AS position,
user_id, score, user_type
FROM users_data
ORDER BY score DESC
をし、このような結果:
と私は私のテーブル
こののようなユーザーのための2台を持っています
users1
+----+----------+----------+
| id | username | position |
+----+----------+----------+
| 1 | uname | 0 |
| 2 | uname2 | 0 |
| 3 | uname3 | 0 |
| 5 | uname5 | 0 |
| 11 | uanme11 | 0 |
| 12 | uname12 | 0 |
+----+----------+----------+
users0
+-----+----------+----------+
| id | username | position |
+-----+----------+----------+
| 1 | uname | 0 |
| 111 | uname111 | 0 |
| 138 | uname138 | 0 |
| 241 | uname241 | 0 |
+-----+----------+----------+
1つのクエリでSELECT sqlが実行されている間に、ユーザーの位置を更新したいとします。
if user_type is 0, update users0.position = @rownum
if user_type is 1, update users1.position = @rownum
結果は次のようにする必要があります
users1
+----+----------+----------+
| id | username | position |
+----+----------+----------+
| 1 | uname | 1100 |
| 2 | uname2 | 1100 |
| 3 | uname3 | 1075 |
| 5 | uname5 | 1075 |
| 11 | uanme11 | 1075 |
| 12 | uname12 | 1175 |
+----+----------+----------+
users0
+-----+----------+----------+
| id | username | position |
+-----+----------+----------+
| 1 | uname | 1075 |
| 111 | uname111 | 1025 |
| 138 | uname138 | 1025 |
| 241 | uname241 | 1025 |
+-----+----------+----------+
なぜあなたは選択クエリまたはINNERが同様に登録しようとアップデートを試してみませんか?どのようにポジションを維持していて、どのテーブルにそれが存在していますか? –