知识储备
IFNULL(expr1,expr2)
如果 expr1 不是 NULL,IFNULL() 返回 expr1,否则它返回 expr2。
主表 ATable
aid - aname - atime
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
副表 BTable
bid - aid
1 1
2 1
3 1
4 2
5 2
6 3
7 1
8 2
为了显示在 B 表中,A 表主键出现的频次,源码如下:
SELECT
a.*, ifnull(count(b.aid), 0) btimes
FROM
ATable a
LEFT JOIN Btable b ON b.aid = a.aid
GROUP BY
b.aid
查询结果如下:
aid - aname - atime - btimes
4 4 4 0
1 1 1 4
2 2 2 3
3 3 3 1
IFNULL(expr1,expr2)
如果 expr1 不是 NULL,IFNULL() 返回 expr1,否则它返回 expr2。
主表 ATable
aid - aname - atime
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
副表 BTable
bid - aid
1 1
2 1
3 1
4 2
5 2
6 3
7 1
8 2
为了显示在 B 表中,A 表主键出现的频次,源码如下:
SELECT
a.*, ifnull(count(b.aid), 0) btimes
FROM
ATable a
LEFT JOIN Btable b ON b.aid = a.aid
GROUP BY
b.aid
查询结果如下:
aid - aname - atime - btimes
4 4 4 0
1 1 1 4
2 2 2 3
3 3 3 1
虽然,结果能够正常显示,但是,处理方式还是不规范的,推荐的还是子查询,适用更优。