如图,mysql,如何用 A sql查询出的某一个字段的所有结果,当作另外一条B sql查询的一个字段?


SELECT a.*FROM questionnaire a;
SELECT  title as xzl_name FROM xzl a JOIN intention_xzl b on a.id= b.xzl_id WHERE b.questionnaire_id='941f69fa430740399ba4ef2506a11957';
SELECT name as service_area FROM area a JOIN service_area  b ON  a.id=b.area_id WHERE b.questionnaire_id='941f69fa430740399ba4ef2506a11957'

如图,让第2张图中所有的结果作为第1张图“xzl_name”字段里面的内容用顿号区分,第3张图所有的结果作为第1张图“service_area”字段里面的内容(所有内容都放入service_area这个字段)
图片描述

图片描述

图片描述

阅读 6k
3 个回答

补充一下,终于看懂了。。intention_xzl的questionnaire_id对应questionnaire的id对吧?就是要三个sql结果关联到一起嘛,看下面sql:

SELECT 
    aa.*,
    bb.xzl_name,
    cc.service_area
FROM questionnaire aa 
join 
    (SELECT  
        b.questionnaire_id questionnaire_id,
        group_concat(title) xzl_name 
    FROM xzl a 
    JOIN intention_xzl b 
    on a.id= b.xzl_id 
    WHERE 
        b.questionnaire_id='941f69fa430740399ba4ef2506a11957' 
    group by b.questionnaire_id) bb
 on aa.id=bb.questionnaire_id
 join
     (SELECT 
         b.questionnaire_id questionnaire_id,
         group_concat(name) service_area 
     FROM area a 
     JOIN service_area  b 
     ON  a.id=b.area_id 
     WHERE 
         b.questionnaire_id='941f69fa430740399ba4ef2506a11957' 
         group by b.questionnaire_id) cc
 on aa.id=cc.questionnaire_id;

left join 一个子查询,好像是最没效率的做法

去看看怎么使用派生表

推荐问题
宣传栏