我尝试按字段值
进行分组(表)LEVEL_COUNT:
id level
1 high
2 high
3 hgih
4 low
.
.
.
如果medium
中不存在level
,但我希望结果如下:
level count
high 3
medium 0
low 1
我尝试IN
和distinct
,但他们只找到了现有值
有没有办法count
不同level
包括不存在的值?
答案 0 :(得分:1)
正如评论中已提到的:DBMS必须知道存在哪些级别(否则它不会知道表level_count
中缺少级别'medium')。
因此,请创建一个包含一列levels
的表level
。添加三行:“高”,“中”,“低”。
将level_count(level)
上的外键添加到levels(level)
。这样可以防止在样本数据中存储类似'hgih'的拼写错误。
然后查询:
select l.level, count(lc.level)
from levels l
left outer join level_count lc on lc.level = l.level
group by l.level;
答案 1 :(得分:0)
我使用PHP与PDO的原始代码
SQL:
SELECT `level` , count(`level`) FROM `level_count` GROUP BY `level`
然后将reuslut推送到level
数组,它将如下所示:
level['high'] = 3, level['medium'] = 0, level['low'] = 1
它的工作,但我认为它并不完美
所以我认为在Outset
中可能有任何SQL语法可以达到这个目的