我有一张名为' Banners'以下数据和结构:
ID Name Enabled SectionID Slot
112 kabob 1 231 6
198 Omega-5 1 231 1
165 eeee 1 231 3
171 iiii 1 231 3
172 jjjj 1 231 3
113 cooked 1 231 4
114 coconut 1 231 5
注意:Slot列中的所有6个插槽(1到6)都可以,但我没有为插槽2添加记录。 即插槽2不存在行。
查询:
SELECT DISTINCT Slot AS '231' FROM Mercola_Banners WHERE
SectionID = 231 and ENABLED = 1
GROUP BY slot
HAVING COUNT(1) <=15
我得到的结果:
231
1 1
2 3
3 4
4 5
5 6
因为,我没有为插槽2添加任何记录,但未在结果中显示。但我想在我的结果中插入那个插槽。因为它没有插槽2的任何记录。或计数&lt; 15。 如下图所示。
预期结果:
231
1 1
2 2
3 3
4 4
5 5
6 6
答案 0 :(得分:0)
评论太长了。
为什么你会厌烦这么复杂的查询?为什么不这样做:
select n as [231]
from (select 1 as n union all select 2 union all select 3 union all select 4 union all
select 5 union all select 6
) n
我不知道你想要的结果与表格中的数据有什么关系。
编辑:
如果我理解正确,你仍然做想要应用其他标准。您说2
符合条件,因为行数少于15行。但它没有进入输出,因为没有行。以下是此问题的一种解决方案:
SELECT n.n AS [231]
FROM (select 1 as n union all select 2 union all select 3 union all select 4 union all
select 5 union all select 6
) n LEFT JOIN
Mercola_Banners mb
ON n.n = mb.slot and mb.SectionID = 231 and mb.ENABLED = 1
GROUP BY n.n
HAVING COUNT(mb.slot) <= 15
答案 1 :(得分:0)
干净的方法是有一个表,例如称为插槽 然后,您可以执行以下查询:
select slotid, (select count(*) from banners b where b.slot = slotid) as count
from slots.
这样,如果您以后添加更多插槽,则只需将它们添加到该表中即可。