在条件上合并mysql行

时间:2013-06-04 17:08:34

标签: mysql

我有一张表:

id_rel | id_art | id_fam | id_cat | id_scat | id_marca | id_model | id_year

  1      cw001      10       11        21       null       null       null
  2      cw001     null     null      null      233        455        466  

对于特定的搜索查询,我需要将它组合在一个像这样的mysql视图中:

id_rel | id_art | id_fam | id_cat | id_scat | id_marca | id_model | id_year

  1      cw001      10       11         21       233       455        466 

所以我必须'删除'空值并组合这些值。 有人可以解释一下它是否可能并且是最好的方法吗?

第一张表的说明:这里我有一些产品(id_art)和家庭,类别,子系列关系以及第二行品牌型号年份关系。 使用此表的网站我有两种搜索,搜索家庭类别 - 子系​​列或搜索品牌 - 型号 - 年,我需要将它们结合起来,所以当我在一个产品系列中时,我必须能够查看与文章相关的所有型号,品牌和年份。

我希望清楚,对不起我的英语 谢谢

2 个答案:

答案 0 :(得分:2)

在MySQL中,MAX()函数将丢弃null个值。所以你可以这样做:

SELECT
    id_rel,
    id_art,
    MAX(id_fam),
    MAX(id_cat),
    MAX(id_scat),
    MAX(id_marca),
    MAX(id_model),
    MAX(id_year)
FROM
    table_name
GROUP BY
    id_art;

当然,这假定价值只会是1null。如果你开始引入其他值,那么[可能]会更难。

答案 1 :(得分:0)

SELECT
    id_rel,
    id_art,
    COALESCE(SUM(id_fam),0),
    COALESCE(SUM(id_cat),0),
    COALESCE(SUM(id_scat),0),
    COALESCE(SUM(id_marca),0),
    COALESCE(SUM(id_model),0),
    COALESCE(SUM(id_year),0)
FROM
    table_name
GROUP BY
    id_art;

将总和或给出0.

你能举出一个更复杂的例子来确保我们得到正确的SQL