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

最初の行がランダム化され、残りがMySQLの基準によって順序付けられている場合、行を選択するにはどうすればよいですか?


このために、ORDERBYCASEステートメントを使用できます。テーブルを作成しましょう-

mysql> create table DemoTable1926
   (
   Position varchar(20),
   Number int
   );
Query OK, 0 rows affected (0.00 sec)

挿入コマンド-

を使用して、テーブルにいくつかのレコードを挿入します
mysql> insert into DemoTable1926 values('Highest',50);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1926 values('Highest',30);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1926 values('Lowest',100);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1926 values('Lowest',120);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1926 values('Lowest',90);
Query OK, 1 row affected (0.00 sec)

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

mysql> select * from DemoTable1926;

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

+----------+--------+
| Position | Number |
+----------+--------+
| Highest  |     50 |
| Highest  |     30 |
| Lowest   |    100 |
| Lowest   |    120 |
| Lowest   |     90 |
+----------+--------+
5 rows in set (0.00 sec)

これは、最初の行がランダム化され、残りが基準に従って並べ替えられている場合に行を選択するためのクエリです-

mysql> select * from DemoTable1926
   order by Position desc,case Position when 'Highest' then rand()
   else Number end asc;

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

+----------+--------+
| Position | Number |
+----------+--------+
| Lowest   |     90 |
| Lowest   |    100 |
| Lowest   |    120 |
| Highest  |     50 |
| Highest  |     30 |
+----------+--------+
5 rows in set (0.00 sec)

  1. MySQLで現在の日付よりも短い日付を選択するにはどうすればよいですか?

    まずテーブルを作成しましょう- mysql> create table DemoTable1877 ( DueDate datetime ); Query OK, 0 rows affected (0.00 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable1877 values('2019-12-10'); Query OK, 1 row affected (0.00 sec) mysql> insert into DemoTable1877 values

  2. MySQLで連結を介して条件付きの行を選択するにはどうすればよいですか?

    これには、CONCAT_WS()を使用できます。テーブルを作成しましょう- mysql> create table demo38 −> ( −> user_id int, −> user_first_name varchar(20), −> user_last_name varchar(20), −> user_date_of_birth date −> ); Query OK, 0 rows affected (1.70 sec) 挿入コマンド-を使用して、いくつかのレコードを