MySQLでレコードを昇順と降順の両方で分割し、それらを交互に表示することは可能ですか?
はい、最初に中間値を取得することで、MySQLでこれを実行できます。最初にテーブルを作成しましょう:
mysql> create table DemoTable ( UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY ); Query OK, 0 rows affected (0.65 sec)
以下は、挿入コマンドを使用してテーブルにいくつかのレコードを挿入するためのクエリです。
mysql> insert into DemoTable values(); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.08 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.16 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.07 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.06 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.10 sec)
以下は、selectコマンドを使用してテーブルのレコードを表示するためのクエリです。
mysql> select *from DemoTable;
これにより、次の出力が生成されます
+--------+ | UserId | +--------+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 | | 10 | +--------+ 10 rows in set (0.00 sec)
最初に中間値を取得するためのクエリは次のとおりです。
mysql> set @middleValue=(select max(UserId) from DemoTable)/2; Query OK, 0 rows affected (0.01 sec)
ここで、昇順と降順の値を交互に取得してみましょう。
mysql> select *from DemoTable ORDER BY (IF(UserId <@middleValue,@middleValue*2- UserId,UserId-1)) DESC,UserId ASC;
これにより、次の出力が生成されます
+--------+ | UserId | +--------+ | 1 | | 10| | 2 | | 9 | | 3 | | 8 | | 4 | | 7 | | 6 | | 5 | +--------+ 10 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
-
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