我有一张表:
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)和家庭,类别,子系列关系以及第二行品牌型号年份关系。 使用此表的网站我有两种搜索,搜索家庭类别 - 子系列或搜索品牌 - 型号 - 年,我需要将它们结合起来,所以当我在一个产品系列中时,我必须能够查看与文章相关的所有型号,品牌和年份。
我希望清楚,对不起我的英语 谢谢
答案 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;
当然,这假定价值只会是1
或null
。如果你开始引入其他值,那么[可能]会更难。
答案 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