SQL条件联接表
我有两个表任务和分配的任务 分配的任务已完成 AT.id,Task.id(可以为空),AT.allocated\u date 任务具有Task.id、Task.name等 用户可以输入Task.id或AT.idSQL条件联接表,sql,Sql,我有两个表任务和分配的任务 分配的任务已完成 AT.id,Task.id(可以为空),AT.allocated\u date 任务具有Task.id、Task.name等 用户可以输入Task.id或AT.id select AT.id, Task.Name from Allocated_Task, Task where (Task.id = :INPUT_TASK_ID or AT.id = :INPUT_AT_id) 预期输出:如果用户提供task.id作为输入,则应在分配的_任务中搜
select AT.id, Task.Name
from Allocated_Task, Task
where (Task.id = :INPUT_TASK_ID or AT.id = :INPUT_AT_id)
预期输出:如果用户提供task.id作为输入,则应在分配的_任务中搜索task.id,如果存在,则返回AT.id、task.Name;如果分配的_任务中不存在,则返回null、task.Name;如果用户提供AT.id,则应在分配的_任务中提供AT.id、task.Name;如果分配的_任务中的task.id不为null,则返回null
分配的任务
AT.id | Task.id
---------------
1 | 10
2 |零
任务
Task.Id |名称
----------------
10 |名称1
20 |姓名2
输出:
AT.ID | NAME
---------------------------------------------------
1 |名称1(如果用户在_id处输入1)
2 |空(如果用户在_id处提供2作为输入_)
1 |名称1(如果用户输入10作为任务ID)
空|名称2(如果用户提供20作为输入_任务_ID)
更新:任务分配给员工(以千为单位),一个员工可以分配n个任务(10秒~100秒),一个任务可以分配给n个员工。
如果用户按Task.Id进行筛选,我们只需要最新分配的_Task.Id(存储任务分配的时间)。使用完全外部联接需要几分钟的时间来执行,这在本例中并不理想。是否有可能提高查询效率?这是完全连接:
SELECT AT.id, T.Name
FROM Allocated_Task AT
FULL JOIN Task T
ON AT.TaskId = T.Id
WHERE T.id = :INPUT_TASK_ID
OR AT.id = :INPUT_AT_id
它是完全连接:
SELECT AT.id, T.Name
FROM Allocated_Task AT
FULL JOIN Task T
ON AT.TaskId = T.Id
WHERE T.id = :INPUT_TASK_ID
OR AT.id = :INPUT_AT_id
完全外部联接可以提供所需的结果,但需要花费大量时间。是否可以在不使用完全外部联接的情况下执行此操作,以便快速执行查询?当您使用按id筛选(如果id是聚集索引)时,这应该不是非常昂贵的查询。完全外部联接提供了所需的结果,但它占用了大量时间。是否可以在没有完全外部联接的情况下执行此操作,以便快速执行查询?当您使用按id筛选(如果id是聚集索引)时,这应该不是非常昂贵的查询。