group_concat이 값을 반환하지 않으면 해결책이 있습니까?
P粉212971745
P粉212971745 2023-08-30 19:44:24
0
2
477

我写了一个查询,根据条件将几行转换为列。

然而,有些情况下没有行满足条件,但我希望返回一些结果。

下面是表格的示例和我要寻找的结果。

源表:

id respondent_id 人口统计 问题 回答
1 1 已检查 年龄 30
2 1 教育 硕士
3 1 已检查 身高 1.8m
4 1 收入 $1
5 1 地址 国际空间站
6 1 才艺 跳舞
7 2 已检查 年龄 20
8 2 教育 高中
9 2 已检查 身高 4m
10 2 收入 $3.2
11 2 地址 高海
12 2 才艺 唱歌

转换后的示例结果:

id respondent_id 年龄 身高 问题 答案
2 1 30 1.8m 教育 硕士
4 1 30 1.8m 收入 $1
5 1 30 1.8m 地址 国际空间站
6 1 30 1.8m 才艺 跳舞
8 2 20 4m 教育 高中
10 2 20 4m 收入 $3.2
11 2 20 4m 地址 高海
12 2 20 4m 才艺 唱歌

当前的MySQL语句:

SET @sql = NULL; SELECT GROUP_CONCAT(DISTINCT CONCAT( '(SELECT l.answer FROM source_table l where l.respondent_id = a.respondent_id AND l.question = ', b.question,') AS ',b.question ) ) INTO @sql FROM source_table b WHERE b.demographic IS NOT NULL; SET @sql = CONCAT('SELECT respondents_id, ',@sql,', a.question , a.answer FROM source_table a WHERE a.demographic IS NULL GROUP BY id '); PREPARE stmt FROM @sql; EXECUTE stmt;

为了澄清,上述查询在有“checked”的人口统计列时有效,但是当没有“checked”单元格时,整个查询失败。

因此,我希望有一个查询在所有情况下都能工作,无论是否有人口统计行。

如果没有人口统计行,则查询应该返回没有新列的数据。

P粉212971745
P粉212971745

모든 응답 (2)
P粉043295337

동적 SQL을 사용하려는 이유가 조금 혼란스럽습니다. 창 기능이 원하는 대로 작동하는 것 같습니다:

으아악

'체크됨' 열을 모르신다면 템플릿으로 사용해도 될 것 같아요.

    P粉823268006

    @FaNo_FN @ysth

    귀하가 게시한 바이올린과 귀하의 의견을 사용하여 성공적으로 수정했습니다.

    변수가 설정되었는지 확인하기 위해 두 쿼리 사이에 다음 코드를 추가했습니다.

    SET @sql := IF(@sql IS NULL,'',@sql);

    아직GROUP_CONCAT之前添加了第二个CONCAT()',' 구분 기호를 추가하는 중입니다.

    여기에fiddle링크가 있습니다.

      최신 다운로드
      더>
      웹 효과
      웹사이트 소스 코드
      웹사이트 자료
      프론트엔드 템플릿
      회사 소개 부인 성명 Sitemap
      PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!