rand()で注文し、MySQLでグループ化したままにしますか?
まずテーブルを作成しましょう-
mysql> create table DemoTable -> ( -> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> StudentMarks int -> ); Query OK, 0 rows affected (0.58 sec)
挿入コマンドを使用して、テーブルにいくつかのレコードを挿入します。重複レコードも挿入しました-
mysql> insert into DemoTable(StudentMarks) values(98); Query OK, 1 row affected (0.11 sec) mysql> insert into DemoTable(StudentMarks) values(98); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable(StudentMarks) values(78); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable(StudentMarks) values(78); Query OK, 1 row affected (0.29 sec) mysql> insert into DemoTable(StudentMarks) values(45); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable(StudentMarks) values(56); Query OK, 1 row affected (0.09 sec)
selectステートメントを使用してテーブルのすべてのレコードを表示する-
mysql> select *from DemoTable;
これにより、次の出力が生成されます-
+-----------+--------------+ | StudentId | StudentMarks | +-----------+--------------+ | 1 | 98 | | 2 | 98 | | 3 | 78 | | 4 | 78 | | 5 | 45 | | 6 | 56 | +-----------+--------------+ 6 rows in set (0.00 sec)
以下は、それらをグループ化したままrand()で並べ替えるクエリです-
mysql> select *from DemoTable order by rand(StudentMarks*100*RAND());
これにより、次の出力が生成されます。ここでは、マーク98レコードはグループ化されたままです-
+-----------+--------------+ | StudentId | StudentMarks | +-----------+--------------+ | 3 | 78 | | 6 | 56 | | 5 | 45 | | 4 | 78 | | 1 | 98 | | 2 | 98 | +-----------+--------------+ 6 rows in set (0.00 sec)
-
MySQL ORDER BY ASCで、下部にNULLを表示しますか?
これには、ORDERBYでCASEステートメントを使用します。まずテーブルを作成しましょう- mysql> create table DemoTable1937 ( Name varchar(20) ); Query OK, 0 rows affected (0.00 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable1937 values('Chris'); Query OK, 1 row affect
-
Cのrand()とsrand()
rand() 関数rand()は、疑似乱数を生成するために使用されます。整数値を返し、その範囲は0からrand_max、つまり32767です。 C言語でのrand()の構文は次のとおりです。 int rand(void); これがC言語のrand()の例です 例 #include <stdio.h> #include<stdlib.h> int main() { printf("%d\n", rand()); printf("%d", rand()); &nb