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

MySQLクエリ結果の列名として列値を設定しますか?


クエリ結果の列名として列の値を設定するには、CASEステートメントを使用する必要があります。

構文は次のとおりです-

select yourIdColumnName,
max(case when (yourColumnName1='yourValue1') then yourColumnName2 else NULL
end) as 'yourValue1',
max(case when (yourColumnName1='yourValue2') then yourColumnName2 else NULL
end) as 'yourValue2',
max(case when yourColumnName1='yourValue3') then yourColumnName2 else NULL
end) as 'yourValue3’,
.
.
N
from valueAsColumn
group by yourIdColumnName
order by yourIdColumnName;

上記の構文を理解するために、テーブルを作成しましょう。テーブルを作成するためのクエリは次のとおりです-

mysql> create table valueAsColumn
   -> (
   -> UserId int,
   -> UserColumn1 varchar(10),
   -> UserColumn2 varchar(10)
   -> );
Query OK, 0 rows affected (0.75 sec)

これで、insertコマンドを使用してテーブルにいくつかのレコードを挿入できます。クエリは次のとおりです-

mysql> insert into valueAsColumn values(0,'John','A+');
Query OK, 1 row affected (0.18 sec)
mysql> insert into valueAsColumn values(0,'Carol','B');
Query OK, 1 row affected (0.17 sec)
mysql> insert into valueAsColumn values(0,'Sam','C');
Query OK, 1 row affected (0.17 sec)
mysql> insert into valueAsColumn values(1,'John','D');
Query OK, 1 row affected (0.20 sec)
mysql> insert into valueAsColumn values(1,'Carol','A');
Query OK, 1 row affected (0.20 sec)
mysql> insert into valueAsColumn values(1,'Carol','C');
Query OK, 1 row affected (0.15 sec)

selectステートメントを使用して、テーブルのすべてのレコードを表示します。クエリは次のとおりです-

mysql> select *from valueAsColumn;

以下は出力です-

+--------+-------------+-------------+
| UserId | UserColumn1 | UserColumn2 |
+--------+-------------+-------------+
|      0 | John        | A+          |
|      0 | Carol       | B           |
|      0 | Sam         | C           |
|      1 | John        | D           |
|      1 | Carol       | A           |
|      1 | Carol       | C           |
+--------+-------------+-------------+
6 rows in set (0.00 sec)

これは、列の値を列名として設定するためのクエリです-

mysql> select UserId,
   -> max(case when (UserColumn1='John') then UserColumn2 else NULL end) as 'John',
   -> max(case when (UserColumn1='Carol') then UserColumn2 else NULL end) as 'Carol',
   -> max(case when (UserColumn1='Sam') then UserColumn2 else NULL end) as 'Sam'
   -> from valueAsColumn
   -> group by UserId
   -> order by UserId;

以下は出力です-

+--------+------+-------+------+
| UserId | John | Carol | Sam  |
+--------+------+-------+------+
|      0 | A+   | B     | C    |
|      1 | D    | C     | NULL |
+--------+------+-------+------+
2 rows in set (0.00 sec)

  1. 行の値を合計して結果を並べ替えるMySQLクエリ?

    このために、ORDERBY句とともにGROUPBYを使用できます。まずテーブルを作成しましょう- mysql> create table DemoTable1499    -> (    -> StudentName varchar(20),    -> StudentMarks int    -> ); Query OK, 0 rows affected (0.46 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert in

  2. 単一のMySQLクエリのすべての列名に「エイリアス」を設定します

    列名のエイリアスを設定するための構文は次のとおりです- select yourColumnName1 anyAliasName1,yourColumnName2 anyAliasName2 from yourTableName anyAliasName; 上記の構文を理解するために、テーブルを作成しましょう- mysql> create table DemoTable2014    -> (    -> FirstName varchar(20),    -> LastName varchar(20)