mysql关系不存在,用MySQL选择不存在的数据

我正在尝试在两个日期范围之间选择数据.但是并非每天都插入所有数据.以下是该表的样本:

mysql> SELECT * FROM attendance;

+------------+-------+

| date | total |

+------------+-------+

| 2012-07-02 | 100 |

| 2012-07-04 | 70 |

| 2012-07-05 | 78 |

+------------+-------+

3 rows in set (0.00 sec)

情景是我希望从2012-07-02到2012-07-04获得总出勤率.根据上面的数据,我会得到

mysql> SELECT * FROM attendance WHERE date BETWEEN '2012-07-02' AND '2012-07-04';

+------------+-------+

| date | total |

+------------+-------+

| 2012-07-02 | 100 |

| 2012-07-04 | 70 |

+------------+-------+

2 rows in set (0.00 sec)

但我的目标是将2012-07-03纳入结果.

+------------+-------+

| date | total |

+------------+-------+

| 2012-07-02 | 100 |

| 2012-07-03 | 0 |

| 2012-07-04 | 70 |

+------------+-------+

这可以通过MySQL完成吗?我确实调查了temporary table.但仍然无法实现目标.

解决方法:

这是一个简单解决方案的常见问题.

创建一个常规表,比如REF_DATE,并将所有日期存储在3年或您需要的任何时间范围内.

然后在LEFT OUTER JOIN的左侧使用此表

SELECT REF.date,IFNULL(A.total,0) as total FROM REF_DATE REF

LEFT OUTER JOIN attendance

ON REF.date=A.date

A WHERE REF.date BETWEEN '2012-07-02' AND '2012-07-04';

DATE是MySQL中的关键字,我在这里使用它是为了提高可读性.使用其他列名称.

标签:mysql,select

来源: https://codeday.me/bug/20191003/1848576.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值