【发布时间】:2014-10-21 05:38:01
【问题描述】:
我正在创建一个查询,以确保满足某些约束。这是一个半工作版本:
SELECT CASE
WHEN TaskId IS NULL THEN 0
ELSE 1
END AS TaskExists,
CASE
WHEN IsDownTask = 0 AND TaskStatus = 63 THEN 1
WHEN IsDownTask = 1 THEN 1
ELSE 0
END AS PressReady,
CASE
WHEN IsDownTask = 1 AND MachineId <> 2710 THEN 1
ELSE 0
END AS DownTaskAssignedToDifferentMachine
FROM Task T
WHERE TaskId = 555555
当TaskId 存在于Task 表中时,这可以正常工作,但如果该任务不存在(因此TaskExists 字段),我还需要返回值。
对于不存在的任务的查询,我希望返回
- TaskExists 0
- PressReady 0
- DownTaskAssignedToDisfferentMachine 0
即使不存在TaskId,我如何修改我的查询以返回它?
【问题讨论】:
-
当
taskId在此表中不存在时,它还存在于何处? -
这可以使用一个相当丑陋的 SQL 语句来完成。如果我是你,我会留下这样的 SQL 并在 C# 端实现一个Null Object,它具有你列举的属性。如果 SQL 没有返回结果,我会使用 null 对象
-
TaskId 在这个表中是唯一的吗?
-
TaskId 来自用户输入。如果他们粗心大意,我想确保我可以提供一些我们不知道的关于任务的反馈。 TaskId 在 Task 表中是唯一的,是的。我现在更倾向于查询 Task 对象并检查客户端是否为 null 和其余属性...
标签: sql sql-server ibatis.net