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_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
使用UNION
关键字https://dev.mysql.com/doc/refman/5.7/en/union.html
写两个 SELECT
语句,只有一个地方不同:第一个使用 level_two
,第二个使用 level_two_extra
。结合 UNION
.
我正在做这个查询
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_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
使用UNION
关键字https://dev.mysql.com/doc/refman/5.7/en/union.html
写两个 SELECT
语句,只有一个地方不同:第一个使用 level_two
,第二个使用 level_two_extra
。结合 UNION
.