从两个不相关的表中选择会导致重复

时间:2014-03-20 23:00:32

标签: mysql select

完成查询后,表格中会填充所有可能的组合,无论它们是否相关,没有JOINUNION。但是,如果你使用JOINUNION,它只打印每个相关项目中的一个(从而删除重复项)我相信...... 我可能是错的,请纠正我,如果情况确实如此。

但是,如果从两个不相关的表中进行选择,请说:例如:

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

1 个答案:

答案 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;