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

MySQLは、1〜3の乱数で対応する列を更新しますか?


範囲内の乱数の場合、MySQLのRAND()メソッドを使用する必要があります。更新の構文は次のとおりです-

UPDATE yourTableName set yourColumnName=value where yourColumnName2=(SELECT
FLOOR(1+RAND()*3));

上記のクエリでは、ステートメントFLOOR(1 + RAND()* 3)が1〜3の数値を生成し、列を更新します。

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

mysql> create table updateRowWith1To3
   -> (
   -> Id int,
   -> Name varchar(100)
   -> );
Query OK, 0 rows affected (0.47 sec)

挿入コマンドを使用して、テーブルにいくつかのレコードを挿入します。クエリは次のとおりです-

mysql> insert into updateRowWith1To3 values(1,'John');
Query OK, 1 row affected (0.24 sec)

mysql> insert into updateRowWith1To3 values(2,'Sam');
Query OK, 1 row affected (0.14 sec)

mysql> insert into updateRowWith1To3 values(3,'Carol');
Query OK, 1 row affected (0.14 sec)

mysql> insert into updateRowWith1To3 values(4,'Mike');
Query OK, 1 row affected (0.16 sec)

mysql> insert into updateRowWith1To3 values(5,'Bob');
Query OK, 1 row affected (0.10 sec)

mysql> insert into updateRowWith1To3 values(6,'David');
Query OK, 1 row affected (0.17 sec)
>

selectステートメントを使用して、テーブルのすべてのレコードを表示します。クエリは次のとおりです-

mysql> select *from updateRowWith1To3;

出力

+------+-------+
| Id   | Name  |
+------+-------+
|    1 | John  |
|    2 | Sam   |
|    3 | Carol |
|    4 | Mike  |
|    5 | Bob   |
|    6 | David |
+------+-------+
6 rows in set (0.00 sec)

これは、1〜3の乱数で列名を更新するために使用できるクエリです-

mysql> update updateRowWith1To3 set Name='Mary' where Id=(select floor( 1 + RAND( ) *3
));
Query OK, 1 row affected (0.15 sec)
Rows matched: 1 Changed: 1 Warnings: 0

これで、テーブルを確認できます。列名は、1〜3の間にMaryで更新されます。テーブルからレコードをチェックするクエリは次のとおりです-

mysql> select *from updateRowWith1To3;

出力

+------+-------+
| Id   | Name  |
+------+-------+
|    1 | Mary  |
|    2 | Sam   |
|    3 | Carol |
|    4 | Mike  |
|    5 | Bob   |
|    6 | David |
+------+-------+
6 rows in set (0.00 sec)

  1. MySQLのクエリでONUPDATEイベントが発生したかどうかを検出するにはどうすればよいですか?

    row_count()を使用して検出できます。 row_count()が1を返す場合、それは新しいレコードであることを意味します。 2が返された場合は、クエリでONUPDATEイベントが発生したことを意味します。以下は構文です- select row_count(); まずテーブルを作成しましょう- mysql> create table DemoTable1512    -> (    -> Value int ,    -> UNIQUE(Value)    -> ); Quer

  2. 対応する列の値からNO値のみのカウントを返すMySQLクエリ

    まずテーブルを作成しましょう- mysql> create table DemoTable1829      (      Name varchar(20),      isTopper ENUM('YES','NO')      ); Query OK, 0 rows affected (0.00 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTabl