完成查询后,表格中会填充所有可能的组合,无论它们是否相关,没有JOIN
或UNION
。但是,如果你使用JOIN
或UNION
,它只打印每个相关项目中的一个(从而删除重复项)我相信...... 我可能是错的,请纠正我,如果情况确实如此。
但是,如果从两个不相关的表中进行选择,请说:例如:
Car Furniture
------- ------------
Make Material
Model Style
HP
我想选择汽车的型号和家具材料,如果没有这样的清单,我该如何做呢?
XR6 Wood
XR6 Leather
XR6 Plastic
XR6 Metal
XR8 Wood
XR8 Leather
etc.....
相反,得到一个这样的列表:
XR6 Wood
XR8 Leather
Charger Plastic
Metal
答案 0 :(得分:0)
在MySQL中执行此操作的方法是枚举由union all
组合的两个子查询中的值。然后进行聚合:
select rn, max(model) as model, max(material) as material
from ((select @rn := @rn + 1 as rn, c.model, NULL as material
from cars c cross join
(select @rn := 0) const
) union all
(select @rnf := @rndf + 1 as rn, NULL as model, f.material
from furniture f cross join
(select @rnf := 0) const
)
) cf
group by rn;