[SQL] MySQL의 결과 쉼표로 구분 된 목록으로
SQLMySQL의 결과 쉼표로 구분 된 목록으로
나는 같은 쿼리를 실행해야합니다 :
SELECT p.id, p.name,
(SELECT name
FROM sites s
WHERE s.id = p.site_id) AS site_list
FROM publications p
그러나 나는 대신 데이터의 컬럼의 목록을 쉼표로 구분을 반환하는 서브 - 선택 싶습니다. 이 경우에도 가능하고, 만약 그렇다면, 어떻게?
해결법
-
==============================
1.당신은, 예를 그을 수행 할 GROUP_CONCAT을 사용할 수 있습니다 같은
당신은, 예를 그을 수행 할 GROUP_CONCAT을 사용할 수 있습니다 같은
SELECT p.id, p.name, GROUP_CONCAT(s.name) AS site_list FROM sites s INNER JOIN publications p ON(s.id = p.site_id) GROUP BY p.id, p.name;
-
==============================
2.대신 그룹 CONCAT를 사용하는 ()는 () 단지 CONCAT을 사용할 수 있습니다
대신 그룹 CONCAT를 사용하는 ()는 () 단지 CONCAT을 사용할 수 있습니다
Select concat(Col1, ',', Col2) as Foo_Bar from Table1;
이 단지 MySQL의 작품을 편집; 오라클 CONCAT는 두 개의 인수를 사용할 수 있습니다. 오라클에서는이 || 선택 COL1과 같이 사용할 수 있습니다 ','|| COL2 || ','|| COL3 표에서 foobar와 같은; SQL 서버에서 당신은 + 파이프 대신 사용할 수 있습니다.
-
==============================
3.내 경우에는 내가 휴대 전화 번호가 고유의 사람의 모든 계좌 번호을 연결해야합니다. 내가 다음 쿼리를 사용하고 그래서 그것을 달성하기 위해.
내 경우에는 내가 휴대 전화 번호가 고유의 사람의 모든 계좌 번호을 연결해야합니다. 내가 다음 쿼리를 사용하고 그래서 그것을 달성하기 위해.
SELECT GROUP_CONCAT(AccountsNo) as Accounts FROM `tblaccounts` GROUP BY MobileNumber
쿼리 결과는 다음과 같습니다 :
Accounts 93348001,97530801,93348001,97530801 89663501 62630701 6227895144840002 60070021 60070020 60070019 60070018 60070017 60070016 60070015
-
==============================
4.이제 나는이 상황에 걸쳐 와서 GROUP_CONCAT 주위에 좀 더 흥미로운 기능을 발견했다. 나는 이러한 세부 사항은 당신이 흥미로운 느낌을 바랍니다.
이제 나는이 상황에 걸쳐 와서 GROUP_CONCAT 주위에 좀 더 흥미로운 기능을 발견했다. 나는 이러한 세부 사항은 당신이 흥미로운 느낌을 바랍니다.
간단한 GROUP_CONCAT
SELECT GROUP_CONCAT(TaskName) FROM Tasks;
결과:
+------------------------------------------------------------------+ | GROUP_CONCAT(TaskName) | +------------------------------------------------------------------+ | Do garden,Feed cats,Paint roof,Take dog for walk,Relax,Feed cats | +------------------------------------------------------------------+
DISTINCT와 GROUP_CONCAT
SELECT GROUP_CONCAT(TaskName) FROM Tasks;
결과:
+------------------------------------------------------------------+ | GROUP_CONCAT(TaskName) | +------------------------------------------------------------------+ | Do garden,Feed cats,Paint roof,Take dog for walk,Relax,Feed cats | +------------------------------------------------------------------+
DISTINCT와 ORDER BY와 GROUP_CONCAT
SELECT GROUP_CONCAT(DISTINCT TaskName ORDER BY TaskName DESC) FROM Tasks;
결과:
+--------------------------------------------------------+ | GROUP_CONCAT(DISTINCT TaskName ORDER BY TaskName DESC) | +--------------------------------------------------------+ | Take dog for walk,Relax,Paint roof,Feed cats,Do garden | +--------------------------------------------------------+
DISTINCT와 SEPARATOR와 GROUP_CONCAT
SELECT GROUP_CONCAT(DISTINCT TaskName SEPARATOR ' + ') FROM Tasks;
결과:
+----------------------------------------------------------------+ | GROUP_CONCAT(DISTINCT TaskName SEPARATOR ' + ') | +----------------------------------------------------------------+ | Do garden + Feed cats + Paint roof + Relax + Take dog for walk | +----------------------------------------------------------------+
GROUP_CONCAT와 결합 열
SELECT GROUP_CONCAT(TaskId, ') ', TaskName SEPARATOR ' ') FROM Tasks;
결과:
+------------------------------------------------------------------------------------+ | GROUP_CONCAT(TaskId, ') ', TaskName SEPARATOR ' ') | +------------------------------------------------------------------------------------+ | 1) Do garden 2) Feed cats 3) Paint roof 4) Take dog for walk 5) Relax 6) Feed cats | +------------------------------------------------------------------------------------+
GROUP_CONCAT 및 그룹화 결과 다음은 GROUP_CONCAT를 사용하기 전에 결과가 있다고 가정
+------------------------+--------------------------+ | ArtistName | AlbumName | +------------------------+--------------------------+ | Iron Maiden | Powerslave | | AC/DC | Powerage | | Jim Reeves | Singing Down the Lane | | Devin Townsend | Ziltoid the Omniscient | | Devin Townsend | Casualties of Cool | | Devin Townsend | Epicloud | | Iron Maiden | Somewhere in Time | | Iron Maiden | Piece of Mind | | Iron Maiden | Killers | | Iron Maiden | No Prayer for the Dying | | The Script | No Sound Without Silence | | Buddy Rich | Big Swing Face | | Michael Learns to Rock | Blue Night | | Michael Learns to Rock | Eternity | | Michael Learns to Rock | Scandinavia | | Tom Jones | Long Lost Suitcase | | Tom Jones | Praise and Blame | | Tom Jones | Along Came Jones | | Allan Holdsworth | All Night Wrong | | Allan Holdsworth | The Sixteen Men of Tain | +------------------------+--------------------------+
USE Music; SELECT ar.ArtistName, GROUP_CONCAT(al.AlbumName) FROM Artists ar INNER JOIN Albums al ON ar.ArtistId = al.ArtistId GROUP BY ArtistName;
결과:
+------------------------+----------------------------------------------------------------------------+ | ArtistName | GROUP_CONCAT(al.AlbumName) | +------------------------+----------------------------------------------------------------------------+ | AC/DC | Powerage | | Allan Holdsworth | All Night Wrong,The Sixteen Men of Tain | | Buddy Rich | Big Swing Face | | Devin Townsend | Epicloud,Ziltoid the Omniscient,Casualties of Cool | | Iron Maiden | Somewhere in Time,Piece of Mind,Powerslave,Killers,No Prayer for the Dying | | Jim Reeves | Singing Down the Lane | | Michael Learns to Rock | Eternity,Scandinavia,Blue Night | | The Script | No Sound Without Silence | | Tom Jones | Long Lost Suitcase,Praise and Blame,Along Came Jones | +------------------------+----------------------------------------------------------------------------+
from https://stackoverflow.com/questions/662207/mysql-results-as-comma-separated-list by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] HOURS-00904 : 잘못된 식별자 (0) | 2020.03.17 |
---|---|
[SQL] SQL NOT IN이 작동하지 않습니다 (0) | 2020.03.17 |
[SQL] 시간 범위 내에서 5 분 간격으로 그룹화 (0) | 2020.03.17 |
[SQL] SQL은 IN 성능 대 가입? (0) | 2020.03.17 |
[SQL] 잠금 대기 제한 시간 초과 "얻기; 내가 트랜잭션을 사용하지 않는 경우에도 "트랜잭션을 다시 시작합니다 (0) | 2020.03.17 |