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

MySQLを使用してグループでランダムに注文するにはどうすればよいですか?


まずテーブルを作成しましょう-

mysql> create table DemoTable
   (
   Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   Value char(1)
   );
Query OK, 0 rows affected (0.66 sec)

挿入コマンド-

を使用して、テーブルにいくつかのレコードを挿入します
mysql> insert into DemoTable(Value) values('X');
Query OK, 1 row affected (0.20 sec)

mysql> insert into DemoTable(Value) values('Y');
Query OK, 1 row affected (0.09 sec)

mysql> insert into DemoTable(Value) values('X');
Query OK, 1 row affected (0.30 sec)

mysql> insert into DemoTable(Value) values('X');
Query OK, 1 row affected (0.07 sec)

mysql> insert into DemoTable(Value) values('Y');
Query OK, 1 row affected (0.17 sec)

mysql> insert into DemoTable(Value) values('Z');
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable(Value) values('Z');
Query OK, 1 row affected (0.11 sec)

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

mysql> select *from DemoTable;

これにより、次の出力が生成されます-

+----+-------+
| Id | Value |
+----+-------+
| 1  | X     |
| 2  | Y     |
| 3  | X     |
| 4  | X     |
| 5  | Y     |
| 6  | Z     |
| 7  | Z     |
+----+-------+
7 rows in set (0.00 sec)

ケース1 −以下はグループ化するクエリですがランダムに-

mysql> select DemoTable.*
   from DemoTable join
   (
   select Value, rand() as `random_Value`
   from DemoTable
   group by Value
   ) tbl2
   on DemoTable.Value = tbl2.Value
order by tbl2.`random_Value`;

これにより、次の出力が生成されます-

+----+-------+
| Id | Value |
+----+-------+
| 6  | Z     |
| 7  | Z     |
| 1  | X     |
| 3  | X     |
| 4  | X     |
| 2  | Y     |
| 5  | Y     |
+----+-------+
7 rows in set (0.00 sec)

ケース2 −ランダムなレコードを表示しているので、上記のクエリを再度実行して表示します-

mysql> select DemoTable.*
   from DemoTable join
   (
   select Value, rand() as `random_Value`
   from DemoTable
   group by Value
   ) tbl2
   on DemoTable.Value = tbl2.Value
order by tbl2.`random_Value`;

これにより、次の出力が生成されます-

+----+-------+
| Id | Value |
+----+-------+
| 2  | Y     |
| 5  | Y     |
| 6  | Z     |
| 7  | Z     |
| 1  | X     |
| 3  | X     |
| 4  | X     |
+----+-------+
7 rows in set (0.00 sec)

  1. 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

  2. MySQL:特殊文字を含む値を見つけてNULLに置き換えるにはどうすればよいですか?

    これには、次の構文のようにSET yourColumnName=NULLを使用します- update yourTableName set yourColumnName=NULL where yourColumnName=yourValue; まずテーブルを作成しましょう- mysql> create table DemoTable1914    (    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,    Code varchar(20)    )AUTO_INCR