我得到了一些关于SLA (服务级别协议)的特定数据集,如下所示。这里x代表小时数。一旦一项任务在给定的时间范围内完成,特定级别的任务如下所示。
级别1-> x>=500级别2
我需要得到特定任务的级别,例如:-如果x为252,则该任务为4级。
我已经设计了以下格式的表,但我不会给出任何x值的级别的能力。请建议我最好的/准确的mysql表格设计。

发布于 2017-08-30 11:32:11
您的表设计隐式地假定一个顺序。在关系数据库中,行没有顺序。没有。
因此,更好的设计应该是这些栏:
serviceLevel
minimumHours
maximumHours然后,检索服务级别变得非常容易:
SELECT serviceLevel
FROM <table>
WHERE <hours> BETWEEN minimumHours AND maximumHours;发布于 2017-08-30 11:35:58
您可以尝试为每个级别存储一个下限和一个上限。
Level | lower | upper
L1 | 500 | NULL
L2 | 400 | 500
L3 | 300 | 400
L4 | 200 | 300
L5 | 100 | 200现在,如果您想运行建议的查询和搜索x = 252,可以这样做:
SET @x=252;
SELECT *
FROM yourTable
WHERE
@x >= lower AND
(@x < upper OR upper IS NULL);https://stackoverflow.com/questions/45959167
复制相似问题