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)
-
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
-
有効な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