Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL에서 조건이 다른 동일한 열의 두 값 연결

<시간/>

이를 위해 집계 함수와 함께 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)