-1
我需要一个查询,它将赋予与某些值相对应的行是强制性的,无论其值是否为空值或这些值在表中都不存在。MySQL:查询获得一些强制行
E.g.
SELECT spot_key, market,panel_member, SUM(weight) as TVR
FROM break_minute_tvr_fixed b
WHERE b.column1 in (1,3,4,2,3,4)
and b.section in (1,2,3,4)
and b.sex in (1,2)
and b.age in (1,2,3,4,5,6,7)
and b.market in ('9')
and spot_key in ('1:20141017:2129')
GROUP BY spot_key, market;
这将返回行为:
+-----------------+--------+---------------------+--------------------+
| spot_key | market | panel_member | TVR |
+-----------------+--------+---------------------+--------------------+
| 1:20141017:2129 | 9 | 010583010102;7.2930 | 134.65280079841614 |
+-----------------+--------+---------------------+--------------------+
1 row in set (0.00 sec)
现在,如果我添加其他价值的市场名单好比说300不那么本身我的查询变得表存在:
SELECT spot_key, market,panel_member, SUM(weight) as TVR
FROM break_minute_tvr_fixed b
WHERE b.column1 in (1,3,4,2,3,4)
and b.section in (1,2,3,4)
and b.sex in (1,2)
and b.age in (1,2,3,4,5,6,7)
and b.market in ('9','300')
and spot_key in ('1:20141017:2129')
GROUP BY spot_key, market;
它给了我与上面相同的输出。但我需要的东西象下面这样:
+-----------------+--------+---------------------+--------------------+
| spot_key | market | panel_member | TVR |
+-----------------+--------+---------------------+--------------------+
| 1:20141017:2129 | 300 | | 0 |
| 1:20141017:2129 | 9 | 010583010102;7.2930 | 134.65280079841614 |
+-----------------+--------+---------------------+--------------------+
删除“GROUP BY”子句后你尝试过吗? –
因此在'break_minute_tvr_fixed'中没有'market' ='300'的行,但是您想要在结果中显示它们以及'spot_key'吗?旁边的问题:你为什么只用1个'spot_key'?你能有超过1个spot_key吗?如果是的话,希望的输出是什么?所有的“spot_key”和“market”配对? – Doon
是@Doon你是对的。在“in”子句中我们可以有多个spot_key。 在这种情况下,我需要所有的组合。 –