MySQL将两列组合成行

时间:2015-11-11 03:06:54

标签: mysql database relational-database

我在做这个查询

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

得到这个结果:

enter image description here

注意列 level_two level_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

1 个答案:

答案 0 :(得分:1)

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