我需要将多个行列值连接成一列。我知道我可以使用GROUP_CONCAT。但它不符合我的需求。这是我的查询:当它们不存在时,Concat也存在多行
SELECT
GROUP_CONCAT(twv.value ORDER BY twv.id ASC SEPARATOR ';') as needed_values
FROM table_with_values twv
WHERE twv.valuetype_id IN (9,12,13,15,17,29)
GROUP BY twv.person_id
的问题是,当用例如valuetype_id = 13没有找到,这个值当然不会被级联一行。
我该如何做到这一点person_id没有valueetype_id = 13的价值''将被插入那部分?
感谢
@Giles 我想你的想法,后来又改了一点。测试了下面的查询,它给了我5行而不是预期的6(因为我要加入??)。
SELECT vid
FROM (SELECT 9 vid UNION SELECT 12 UNION SELECT 13 UNION SELECT 15 UNION SELECT 17 UNION SELECT 29) vids
LEFT JOIN sollicitant_profiel sp1 ON (sp1.vraag_id = vids.vid)
WHERE sp1.sollicitant_id = 1
而这个人做工作,并给出了6行预期:
SELECT vids.vid, vids2.vid
FROM (SELECT 9 vid UNION SELECT 12 UNION SELECT 13 UNION SELECT 15 UNION SELECT 17 UNION SELECT 29) vids
LEFT JOIN (SELECT 9 vid UNION SELECT 12 UNION SELECT 13 UNION SELECT 15 UNION SELECT 17) vids2 ON (vids.vid = vids2.vid)