MySQL은 쉼표로 분리 된 목록입니다
-
20-08-2019 - |
문제
다음과 같은 쿼리를 실행해야합니다.
SELECT p.id, p.name,
(SELECT name
FROM sites s
WHERE s.id = p.site_id) AS site_list
FROM publications p
그러나 하위 선택이 데이터 열 대신 쉼표 분리 목록을 반환하기를 바랍니다. 이것이 가능합니까, 그렇다면 어떻게?
해결책
당신이 사용할 수있는 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;
다른 팁
사용하는 대신 group concat()
당신은 그냥 사용할 수 있습니다 concat()
Select concat(Col1, ',', Col2) as Foo_Bar from Table1;
이것을 편집하면 MySQL에서만 작동합니다. Oracle Concat는 두 가지 인수 만 받아들입니다. Oracle에서는 select col1 || ','|| col2 || ','|| col3와 같은 것을 table1에서 foobar로 사용할 수 있습니다. SQL Server에서는 파이프 대신 +를 사용합니다.
제 경우에는 휴대폰 번호가있는 사람의 모든 계정 번호가 고유 한 사람의 모든 계정 번호를 연결해야합니다. 그래서 나는 다음 쿼리를 사용하여이를 달성했습니다.
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
제휴하지 않습니다 StackOverflow