繁体   English   中英

Oracle SQL-在何处条件中从一个条件中搜索两个值的参数

[英]Oracle SQL - Parameter in where condition to search two values from one

我有这种情况:在I_COMPANY表中标识了一家公司,并在IC_COMPANY_CODE列中具有唯一代码,在IC_COMPANY_DESC列中具有描述。

记录示例:

  • IC_COMPANY_DESC ='ATLANTA',由两个IC_COMPANY_CODE = 901和902标识。
  • IC_COMPANY_DESC ='TORONTO',由两个IC_COMPANY_CODE = 903和904标识。

在此示例查询SQL中,在WHERE条件下,我想插入一个参数:IC_COMPANY_CODE ='901',并且查询搜索结果必须在数据集901和902中显示记录,如何编写此查询?

SELECT IC_COMPANY_CODE, IC_COMPANY_DESC
FROM I_COMPANY
WHERE IC_COMPANY_CODE  = :IC_COMPANY_CODE -- > how to insert 901 string and display result for 901 and 902?

谢谢

您可以在子查询中获取描述,并返回带有描述的所有记录

SELECT IC_COMPANY_CODE, IC_COMPANY_DESC
FROM I_COMPANY
WHERE IC_COMPANY_DESC IN (SELECT IC_COMPANY_DESC
                          FROM I_COMPANY
                          WHERE IC_COMPANY_CODE  = :IC_COMPANY_CODE)

您可以使用子查询(假设给定IC_COMPANY_CODE仅一行)

SELECT *
FROM I_COMPANY
WHERE IC_COMPANY_DESC = 
                          ( 
                            SELECT IC_COMPANY_DESC
                            FROM I_COMPANY
                            WHERE IC_COMPANY_CODE = :IC_COMPANY_CODE
                          )

或将表加入自身:

SELECT C2.IC_COMPANY_CODE,  IC_COMPANY_DESC
FROM I_COMPANY C1
  INNER JOIN I_COMPANY C2
    USING (IC_COMPANY_DESC)
WHERE C1.IC_COMPANY_CODE = :IC_COMPANY_CODE

我已解决在WHERE条件下应用此问题的决心:

DECODE(IC_COMPANY_CODE,'901','902','903','904',IC_COMANY_CODE)=:IC_COMANY_CODE

谢谢你的支持

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM