获得1个值到1个列

k75qkfdt  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(198)

很好的一天。我需要这样的输出,有没有可能这个输出。

我有我的剧本:我的输出是这个

SELECT q_type,q_title,qcategory_question 
FROM `survey_question` as sq LEFT JOIN 
          (SELECT id,qid,qcategory_question 
           FROM survey_category_question
          ) scq ON sq.id = scq.qid

提前谢谢。

1aaf6o9v

1aaf6o9v1#

你的问题很好。您应该处理应用程序中的格式设置。现在,我将提出一个不同的建议,即使用 group by :

SELECT sq.q_type, sq.q_title, GROUP_CONCAT(scq.qcategory_question)
FROM survey_question sq LEFT JOIN 
     survey_category_question scq
     ON sq.id = scq.qid
GROUP BY sq.q_type, sq.q_title;

笔记:
限定查询中的所有列名,特别是当您有多个表引用时。
子查询在mysql中是不必要的,而且可能是有害的(大多数数据库会忽略它,但mysql可能会具体化它)。
结果类别将在逗号分隔的列表中输出。

wfypjpf4

wfypjpf42#

虽然我不建议您在查询中执行此操作,因为您可以轻松地在php中执行此操作,但您可以尝试此操作。。

SET @row_number = 0;
SELECT q_type, CASE 
    WHEN A.mxnum = AA.num
        THEN q_title
    ELSE ' '
    END AS q_title, qcategory_question
FROM (
SELECT q_type, q_title, qcategory_question, (@row_number: = @row_number + 1) 
       AS num FROM `survey_question` AS sq
LEFT JOIN (
    SELECT id, qid, qcategory_question
    FROM survey_category_question
    ) AA
LEFT JOIN (
    SELECT q_title, max(num) AS mxnum
    FROM (
        SELECT q_type, q_title, qcategory_question, (@row_number: = @row_number + 1) AS num
        FROM `survey_question` AS sq
        LEFT JOIN (
            SELECT id, qid, qcategory_question
            FROM survey_category_question
            ) scq
            ON sq.id = scq.qid
        )
    GROUP BY q_title
    ) A
    ON num = mxnum
);

希望这有帮助。。。

相关问题