比较Oracle SQL中表之间的范围
我有两张桌子,中间的和中间的。根据表1中的中心ID,我需要找到相应的ID 例如,如果Centreid是2000,那么它应该显示100。表1中所有记录的显示方式相同 我发现写这个查询很困难 你能在这方面指导我吗比较Oracle SQL中表之间的范围,sql,oracle,oracle11g,oracle-sqldeveloper,Sql,Oracle,Oracle11g,Oracle Sqldeveloper,我有两张桌子,中间的和中间的。根据表1中的中心ID,我需要找到相应的ID 例如,如果Centreid是2000,那么它应该显示100。表1中所有记录的显示方式相同 我发现写这个查询很困难 你能在这方面指导我吗 DEPT Center_Id 10 2000 10 2001 20 3001 20 2580 CENTER_FROM CENTER_TO ALLOCATION_ID 1999 2499 a100 2500
DEPT Center_Id
10 2000
10 2001
20 3001
20 2580
CENTER_FROM CENTER_TO ALLOCATION_ID
1999 2499 a100
2500 2999 b234
3000 3499 c199
谢谢您可以
加入
这些表,这样一个表的中心id在另一个表的中心自和中心至之间
select c.dept,c.center_id,rc.allocation_id
from center c
join range_center rc on c.center_id between rc.center_from and rc.center_to
您可以join
这些表,以便一个表的中心id在另一个表的中心和中心之间
select c.dept,c.center_id,rc.allocation_id
from center c
join range_center rc on c.center_id between rc.center_from and rc.center_to
如果不喜欢联接,则可以使用关联子查询:
SELECT c.DEPT, c.Center_Id,
( SELECT ALLOCATION_ID FROM RANGE_CENTER r
WHERE c.Center_Id BETWEEN r.CENTER_FROM AND r.CENTER_TO
) As ALLOCATION_ID
FROM CENTER c
如果不喜欢联接,则可以使用关联子查询:
SELECT c.DEPT, c.Center_Id,
( SELECT ALLOCATION_ID FROM RANGE_CENTER r
WHERE c.Center_Id BETWEEN r.CENTER_FROM AND r.CENTER_TO
) As ALLOCATION_ID
FROM CENTER c
您好,有没有其他不使用联接的方法可以编写代码。您可以使用带有硬编码范围的case
表达式。@Mani-对于具有两个表的查询,不使用联接是一个非常特殊的要求。你需要证明限制的合理性。不,这不是客户方的要求。连接一列对我来说是一个小问题,因为我没有提到表的完整结构。如果可能的话,请让我知道,有没有其他方法不使用联接就可以编写。您可以使用带有硬编码范围的case
表达式。@Mani-对于具有两个表的查询,不使用联接是一个非常特殊的要求。你需要证明限制的合理性。不,这不是客户方的要求。一列上的连接对我来说是一个小问题,因为我没有提到表的完整结构。如果可能的话,请让我知道这很好,我只需要限制在子查询中返回多个值的行。我正在从子查询中指定多行,我只需要显示那些正在检索单行的行。该错误意味着,RANGE\u CENTER
包含重叠的范围。在这种情况下,唯一的方法是连接两个表。这很好,我只需要限制在子查询中返回多个值的行:我正在从子查询中指定多个行,我只需要显示检索单行的行。错误意味着,RANGE\u CENTER
包含重叠的范围。在这种情况下,唯一的方法是连接两个表。