Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL条件联接表_Sql - Fatal编程技术网

SQL条件联接表

SQL条件联接表,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作为输入,则应在分配的_任务中搜

我有两个表任务和分配的任务

分配的任务已完成 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作为输入,则应在分配的_任务中搜索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是聚集索引)时,这应该不是非常昂贵的查询。