繁体   English   中英

MySQL将两列合并为行

[英]MySQL combine two columns into rows

我在做这个查询

SELECT 
ub_properties.title, 
ub_level_two.level_two AS level_two, 
ub_autocomplete.level_two AS level_two_extra, 
ub_utility.utility  AS utility, 
ub_autocomplete.utility AS utility_extra 
FROM ub_properties 
LEFT JOIN ub_meta ON ub_properties.post_id=ub_meta.post_id 
LEFT JOIN ub_level_two ON ub_meta.level_two_id=ub_level_two.id 
LEFT JOIN ub_utility ON ub_meta.utility_id=ub_utility.id 
LEFT JOIN ub_autocomplete ON ub_meta.autocomplete_id=ub_autocomplete.id 
WHERE ub_properties.user_id=1

并得到以下结果:

在此处输入图片说明

请注意,列level_twolevel_two_extra-它们应该在同一列中。 因此,本质上,我需要将这两列的结果合并为一列(将在结果集中产生更多的行)。

我不能在这里使用CONCAT,因为出于技术原因,我希望它们各自排成一行。

任何将我指向正确方向的建议将不胜感激。 到处搜寻都没有成功。

----编辑,解决方案---- (感谢@drpetermolnar)

SELECT 
ub_properties.title, 
ub_level_two.level_two, 
ub_utility.utility
FROM ub_properties 
LEFT JOIN ub_meta ON ub_properties.post_id=ub_meta.post_id 
LEFT JOIN ub_level_two ON ub_meta.level_two_id=ub_level_two.id 
LEFT JOIN ub_utility ON ub_meta.utility_id=ub_utility.id 
WHERE ub_properties.user_id=1
UNION
SELECT 
ub_properties.title, 
ub_autocomplete.level_two, 
ub_autocomplete.utility 
FROM ub_properties 
LEFT JOIN ub_meta ON ub_properties.post_id=ub_meta.post_id 
LEFT JOIN ub_autocomplete ON ub_meta.autocomplete_id=ub_autocomplete.id
WHERE ub_properties.user_id=1

使用UNION关键字https://dev.mysql.com/doc/refman/5.7/en/union.html编写两个仅在一个地方不同的SELECT语句:第一个使用level_two ,第二个使用level_two_extra UNION结合。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM