MySQLの条件が異なる同じ列の2つの値を連結します
このために、集計関数でgroup_concat()を使用できます。まずテーブルを作成しましょう-
mysql> create table DemoTable1869 ( Id int, Subject varchar(20 ), Name varchar(20) ); Query OK, 0 rows affected (0.00 sec)
挿入コマンド-
を使用して、テーブルにいくつかのレコードを挿入しますmysql> insert into DemoTable1869 values(100,'MySQL','John'); Query OK, 1 row affected (0.00 sec) mysql> insert into DemoTable1869 values(100,'MongoDB','Smith'); Query OK, 1 row affected (0.00 sec) mysql> insert into DemoTable1869 values(101,'MySQL','Chris'); Query OK, 1 row affected (0.00 sec) mysql> insert into DemoTable1869 values(101,'MongoDB','Brown'); Query OK, 1 row affected (0.00 sec)
selectステートメントを使用してテーブルのすべてのレコードを表示する-
mysql> select * from DemoTable1869;
これにより、次の出力が生成されます-
+------+---------+-------+ | Id | Subject | Name | +------+---------+-------+ | 100 | MySQL | John | | 100 | MongoDB | Smith | | 101 | MySQL | Chris | | 101 | MongoDB | Brown | +------+---------+-------+ 4 rows in set (0.00 sec)
これは、同じ列の2つの値を異なる条件で連結するためのクエリです-
mysql> select Id,concat(StudentFirstName,'',StudentLastName) from ( select Id, max(case when Subject='MySQL' then Name end) as StudentFirstName, max(case when Subject='MongoDB' then Name end) as StudentLastName from DemoTable1869 group by Id )tbl;
これにより、次の出力が生成されます-
+------+---------------------------------------------+ | Id | concat(StudentFirstName,'',StudentLastName) | +------+---------------------------------------------+ | 100 | JohnSmith | | 101 | ChrisBrown | +------+---------------------------------------------+ 2 rows in set (0.00 sec)
-
MySQLで列の値を個別のテキストと連結し、単一の列に表示します
最初にテーブルを作成しましょう- mysql> create table DemoTable -> ( -> Id int, -> Name varchar(20) -> ); Query OK, 0 rows affected (0.93 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable values(101,'Chris'); Query OK, 1
-
MySQLのAmount列から同じ価格の2つの異なる合計を表示するにはどうすればよいですか?
このために、caseステートメントを使用できます。まずテーブルを作成しましょう- mysql> create table DemoTable1794 ( Amount int ); Query OK, 0 rows affected (0.00 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable1794 values(100); Query OK, 1 row affected