서브쿼리의 출력을 조절할 수 있습니까?
값을 반환하는 쿼리가 있지만 쉼표로 구분된 단일 출력으로 필요합니다.
그래서 쉼표로 출력을 조절하려고 했는데 작동이 안 되나요?
select id from videos where duration=0; /// this would return some rows
나는 concat과 concat_ws를 시도했지만 작동하지 않았습니다.
select concat(select concat(id,',') from videos where duration=0);
select concat((select id from videos where duration=0),',');
select concat_ws(',',(select id from videos where duration=0));
쉼표 부분이 있는 모든 행의 ID가 필요합니다.
예를 들어 출력은 1,4,6,78,565이어야 합니다.
무슨 생각 있어요?
group_concat이 수행하는 작업입니다.
select group_concat(id) as video_list
from videos
where duration=0
사용해보기GROUP_CONCAT
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
참조 : http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat
group_concat 사용:
이 함수는 그룹에서 연결된 NULL이 아닌 값이 포함된 문자열 결과를 반환합니다.NULL이 아닌 값이 없으면 NULL을 반환합니다.
SELECT
GROUP_CONCAT(id)
FROM
videos
WHERE
duration=0
사용할 수 없는 문제를 해결하기 위해 노력하는 것.LIMIT
와 함께GROUP_CONCAT
하위 쿼리의 결과를 기준으로 그룹화할 수 있습니다.
이 쿼리는 비디오 ID를 20개 그룹으로 나눕니다(일부 데이터셋에서는 매우 느릴 수 있음).
select group_concat(v.id) as video_list
from videos as v
where v.duration=0
group by (
select floor(count(v2.id)/20)
from videos as v2
where v2.duration=0
and v2.id <= v.id
)
또는 결과가 많지만 이렇게 느린 쿼리를 원하지 않는 경우 사용자 크기로 늘릴 수 있습니다.group_concat_max_len
(https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_group_concat_max_len) 당신의 것까지.max_allowed_packet
(https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_max_allowed_packet), 이 길이가 여전히 충분하지 않다면 max_allowed_packet 크기도 늘려야 합니다.
언급URL : https://stackoverflow.com/questions/3812864/concat-the-output-of-the-subquery
'programing' 카테고리의 다른 글
HTML 캔버스에서 텍스트의 높이를 어떻게 찾을 수 있습니까? (0) | 2023.10.30 |
---|---|
Postgre와 동등한 오라클SQL INSERT...돌아오는 *; (0) | 2023.10.30 |
jQuery UI 슬라이더(프로그래밍 방식으로 설정) (0) | 2023.10.30 |
연결 테스트를 위한 범용 SELECT 쿼리 (0) | 2023.10.30 |
xsd:include와 xsd:import의 차이점은 무엇입니까? (0) | 2023.10.30 |