문제

다음과 같은 쿼리를 실행해야합니다.

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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top