从表中过滤掉不需要的条目

时间:2014-07-22 19:02:42

标签: sql join distinct with-statement

我有一个表(实际上是查询的结果),它具有以下属性:


Group_name的
JOB_NAME
状态
RUN_TIME

对于给定的工作,可能会有“正在运行”,“已完成”或“失败”的状态。 有时,作业会失败,然后再次运行。或者我的工作将永远存在,另一份工作将开始。因此,在某些情况下,作业可能有两个具有两种不同状态的条目(例如,'失败'以及'完成')。在这些情况下,我只想要一个条目。只要其中一个条目“完成”,我就想删除其他条目。

我该怎么做呢?我如何有条件地消除'重叠'条目?

编辑:

我想到的一个选项是自己加入表(使用WITH子句,因为我的表实际上是一个查询)。但是我不知道如何让它工作,或者设置什么条件,以便只返回两个想要的条目中的一个。

1 个答案:

答案 0 :(得分:0)

执行此操作的一个好方法是规范化您的表格。 拿你的桌子改变它看起来像这样:

Continent
Group_name
job_name
run_time
statusID_FK

接下来,将状态ID设置为链接到状态表的外键:

StatusID
Status_Description

(状态描述可以被称为任何。值将是"完成"等等)

然后,您需要做的就是在表之间建立1-Many关系。

完成后,在您的应用程序代码中添加逻辑,该逻辑将以您指定的间隔(可能在执行更新时)进行检查,如果存在的条目是"完成"并且可以根据您的标准删除。

如果找到,只需使用SQL存储过程将其从数据库中删除。

至少,这就是我要做的。希望这有帮助!