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

ORDER BY句でRAND()関数を使用して、MySQLの行セットをシャッフルするにはどうすればよいですか?


RAND()関数でMySQL ORDER BY句を使用すると、結果セットにはシャッフルされた行のセットが含まれます。つまり、結果セットはランダムな順序になります。それを理解するために、次のレコードを持つテーブル「従業員」を考慮します-

mysql> Select * from employee;
+----+--------+--------+
| ID | Name   | Salary |
+----+--------+--------+
| 1  | Gaurav | 50000  |
| 2  | Rahul  | 20000  |
| 3  | Advik  | 25000  |
| 4  | Aarav  | 65000  |
| 5  | Ram    | 20000  |
| 6  | Mohan  | 30000  |
| 7  | Aryan  | NULL   |
| 8  | Vinay  | NULL   |
+----+--------+--------+
8 rows in set (0.00 sec)

これで、以下のクエリはORDER BT RAND()を使用して、結果セットの行のセットをシャッフルします-

mysql> Select * from Employee ORDER BY RAND();
+----+--------+--------+
| ID | Name   | Salary |
+----+--------+--------+
| 4  | Aarav  | 65000  |
| 1  | Gaurav | 50000  |
| 3  | Advik  | 25000  |
| 7  | Aryan  | NULL   |
| 6  | Mohan  | 30000  |
| 8  | Vinay  | NULL   |
| 5  | Ram    | 20000  |
| 2  | Rahul  | 20000  |
+----+--------+--------+
8 rows in set (0.00 sec)

  1. IN句の順序でMySQL行を選択するにはどうすればよいですか?

    IN句の順序でMySQL行を選択するには、FIND_IN_SET()関数を使用する必要があります。構文は次のとおりです- SELECT yourVariableName.* FROM yourTableName yourVariableName WHERE yourVariableName.yourColumnName IN(value1,value2,...N) ORDER BY FIND_IN_SET( yourVariableName.yourColumnName,'value1,value2,...N'); 上記の構文を理解するために、テーブルを作成しましょう。テーブ

  2. MySQL GROUP BY句の行を並べ替える、または選択する方法は?

    まずテーブルを作成しましょう- mysql> create table DemoTable1572    -> (    -> StudentId int,    -> StudentMarks int,    -> StudentName varchar(20)    -> ); Query OK, 0 rows affected (0.56 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert i