|
|
1
3
您已经有了一个占位符。“占位符” 未知的 SQL中的“数据”为空。 您不需要预先填充任何内容:要么您有一行,其中某些列的值未知(空),要么您根本没有行,这样做一个外部联接将得到一个全为空的行。不管怎样, 属性数据 (本质上,非ID字段)将为空。
以及
所以说你 做 有一个游戏行(因为它是预先安排的),但没有相应的行为它的周期(因为他们还没有被玩)。然后你做一个从外部加入到周期的游戏(外部,这样你就包括了两个游戏 具有 游戏 没有 期间数据):
这将按游戏显示总目标(对于两个团队);对于没有句点的游戏,返回空值(这在SQL中意味着,“我们还不知道”)。 此查询只显示已完成游戏的总目标 和正在进行的游戏(至少玩过一段时间的游戏) :
此视图过滤掉未完成的游戏(假设您总是在后期之前添加早期时段):
使用该视图,我们可以只对已完成的游戏进行求和:
因此,不需要预先填充,不需要触发,最重要的是,不需要添加错误数据(在实际上还没有执行期间的情况下声明零目标),不需要使用正确的数据更新。只需在有数据时插入句点即可。 |
|
|
2
0
选项1显然更容易:如果您可以信任计数器已经存在,那么您已经知道如何增加计数器的通气量。假设你将使用选项2,不仅很难填写缺少的零(我假设应该在期末完成),如果没有前一个条目并且第一个目标得分,你还必须找到一种方法以1开始计数器。 至于空间效率:最终,无论哪种方式,您都需要相同的磁盘空间。只在一个周期结束时填充零会稍微更有效一些,但可以肯定的是,完成周期所占的空间比运行周期所占的空间要大。 至于插入/更新效率:无论哪种方式,当目标得分时,都需要执行查找,因为可能已经有一个非零计数器了。因此,您需要创建一个索引,允许按游戏、团队和时段进行有效的查找。考虑到总是进行更新的查询较短,很有可能它也更高效。 |
|
|
3
0
您知道可以设置列的默认值吗?使用默认关键字。 前任。: 创建表人员( Age Int默认值为0, 名称varchar(35)默认为“bob” ) 默认值将是您想要的值(例如0),而不是空值。 它并不能解决所有问题,但会有所帮助。 |
|
|
Bard.Mus · 迁移后的数据库字符集环境 1 年前 |
|
Efannnnnn · 将Id数据存储到任何页面 1 年前 |
|
|
yooooo · 用于在块中删除的存储过程-LOOP未执行 1 年前 |
|
John Beasley · 更新一定数量记录的连续日期 1 年前 |
|
|
ColinM · MySQL以前的结果查询返回不正确的值 1 年前 |
|
Sergey_Z · MySQL只需无条件连接2个表和交叉连接 1 年前 |