MySQLの「groupby」内の「orderby」?出来ますか?
GROUPBY内でORDERBYを使用する代わりに、MAX()集計関数を使用できます。
構文は次のとおりです-
SELECT yourNameColumnName,MAX(yourRankColumnName) FROM yourTableName GROUP BY yourNameColumnName;
上記の構文を理解するために、テーブルを作成しましょう。テーブルを作成するためのクエリは次のとおりです-
mysql> create table MaxDemo -> ( -> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> UserName varchar(20), -> UserRank int -> ); Query OK, 0 rows affected (0.77 sec)>
挿入コマンドを使用して、テーブルにいくつかのレコードを挿入します。クエリは次のとおりです-
mysql> insert into MaxDemo(UserName,UserRank) values('Larry',2); Query OK, 1 row affected (0.21 sec) mysql> insert into MaxDemo(UserName,UserRank) values('Sam',1); Query OK, 1 row affected (0.17 sec) mysql> insert into MaxDemo(UserName,UserRank) values('Sam',2); Query OK, 1 row affected (0.15 sec)
これで、selectステートメントを使用してテーブルのすべてのレコードを表示できます。クエリは次のとおりです-
mysql> select *from MaxDemo;
出力
+--------+----------+----------+ | UserId | UserName | UserRank | +--------+----------+----------+ | 1 | Larry | 2 | | 2 | Sam | 1 | | 3 | Sam | 2 | +--------+----------+----------+ 3 rows in set (0.00 sec)
MAX()関数を使用して結果を取得するためのクエリは次のとおりです-
mysql> select UserName,MAX(UserRank) from MaxDemo group by UserName;
出力
+----------+---------------+ | UserName | MAX(UserRank) | +----------+---------------+ | Larry | 2 | | Sam | 2 | +----------+---------------+ 2 rows in set (0.00 sec)
-
Idによって区別されるconcatをグループ化するMySQLクエリ?
まずテーブルを作成しましょう- mysql> create table DemoTable ( Id int, Name varchar(100) ); Query OK, 0 rows affected (0.64 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable values(100,'Chris'); Query OK, 1 row affected (0.44 sec) mysql> insert into Dem
-
MySQLクエリを複数のIDで並べ替えますか?
これには、ORDER BY FIELD()を使用します。まずテーブルを作成しましょう- mysql> create table DemoTable( ClientId varchar(40), ClientName varchar(40) ); Query OK, 0 rows affected (0.55 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable values('987_John','John'); Q