MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

IDが最も高く、フィールドが変数と等しいMySQL UPDATEクエリ?


構文は次のとおりです

update yourTableName
set yourColumnName1=yourValue where yourColumnName2=yourValue order by yourIdColumnName DESC LIMIT 1;

上記の構文を理解するために、テーブルを作成しましょう。テーブルを作成するためのクエリは次のとおりです

mysql> create table UpdateWithHighestDemo
   -> (
   -> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> UserStatus tinyint,
   -> UserRank int
   -> );
Query OK, 0 rows affected (0.61 sec)

挿入コマンドを使用して、テーブルにいくつかのレコードを挿入します。

クエリは次のとおりです

mysql> insert into UpdateWithHighestDemo(UserStatus,UserRank) values(1,78);
Query OK, 1 row affected (0.12 sec)
mysql> insert into UpdateWithHighestDemo(UserStatus,UserRank) values(0,118);
Query OK, 1 row affected (0.18 sec)
mysql> insert into UpdateWithHighestDemo(UserStatus,UserRank) values(1,223);
Query OK, 1 row affected (0.62 sec)
mysql> insert into UpdateWithHighestDemo(UserStatus,UserRank) values(1,225);
Query OK, 1 row affected (0.12 sec)
mysql> insert into UpdateWithHighestDemo(UserStatus,UserRank) values(0,227);
Query OK, 1 row affected (0.14 sec)
mysql> insert into UpdateWithHighestDemo(UserStatus,UserRank) values(0,230);
Query OK, 1 row affected (0.17 sec)

selectステートメントを使用してテーブルのすべてのレコードを表示します。

クエリは次のとおりです

mysql> select *from UpdateWithHighestDemo;

以下は出力です

+--------+------------+----------+
| UserId | UserStatus | UserRank |
+--------+------------+----------+
| 1      | 1          | 78       |
| 2      | 0          | 118      |
| 3      | 1          | 223      |
| 4      | 1          | 225      |
| 5      | 0          | 227      |
| 6      | 0          | 230      |
+--------+------------+----------+
6 rows in set (0.00 sec)

これが列を更新するためのクエリです

mysql> update UpdateWithHighestDemo
-> set UserStatus=1 where UserRank=230 order by UserId DESC LIMIT 1;
Query OK, 1 row affected (0.19 sec)
Rows matched: 1 Changed: 1 Warnings: 0

selectステートメントを使用してテーブルのレコードを確認して表示しましょう。

クエリは次のとおりです

mysql> select *from UpdateWithHighestDemo;

以下は出力です

+--------+------------+----------+
| UserId | UserStatus | UserRank |
+--------+------------+----------+
| 1      | 1          | 78       |
| 2      | 0          | 118      |
| 3      | 1          | 223      |
| 4      | 1          | 225      |
| 5      | 0          | 227      |
| 6      | 1          | 230      |
+--------+------------+----------+
6 rows in set (0.00 sec)

これで、最高のIDで更新する場合は、ORDERBY句が役立ちます。上記のサンプル出力では、最高の「UserId」=6、UserStatusは1です。

UserStatusを0に更新しましょう。

クエリは次のとおりです

mysql> update UpdateWithHighestDemo
   -> set UserStatus=0 order by UserId DESC LIMIT 1;
Query OK, 1 row affected (0.18 sec)
Rows matched: 1 Changed: 1 Warnings: 0

selectステートメントを使用してテーブルのレコードを確認します。

クエリは次のとおりです

mysql> select *from UpdateWithHighestDemo;
+--------+------------+----------+
| UserId | UserStatus | UserRank |
+--------+------------+----------+
| 1      | 1          | 78       |
| 2      | 0          | 118      |
| 3      | 1          | 223      |
| 4      | 1          | 225      |
| 5      | 0          | 227      |
| 6      | 0          | 230      |
+--------+------------+----------+
6 rows in set (0.00 sec)

  1. MySQL:Group Byでフィールドを更新しますか?

    GROUP BYでフィールドを更新するには、UPDATEコマンドでORDERBYLIMITを使用します- mysql> create table DemoTable2018    -> (    -> EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KEY,    -> EmployeeName varchar(20),    -> EmployeeSalary int    -> ); Query OK, 0 r

  2. 有効なMySQLクエリを記述し、カスタム変数で更新するにはどうすればよいですか?

    まずテーブルを作成しましょう- mysql> create table DemoTable2027    -> (    -> UserId int    -> ); Query OK, 0 rows affected (0.65 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable2027 values(10); Query OK, 1 row affected (0.18 sec) mysql> insert