Where子句应用于两个链接列 - ORACLE

时间:2014-01-27 05:40:50

标签: sql oracle

首先,如果标题不代表问题的主旨,我表示道歉。欢迎任何建议的改进。我的问题是我正在尝试将WHERE子句应用于两列,这些列表示关系。也就是说,列A中的每个字段都与列B中的对等字段的关系链接。因此,使用AND将带来A字段的所有可能关系,而每个字段只需要一条记录,突出显示与B中一条记录的关系。列为SUPPLIERBUYER。 当我尝试以下内容时:

SELECT supplier_id, 
       buyer_id 
FROM   relationships 
WHERE  supplier_id IN ( 1, 2, 3 ) 
       AND buyer_id IN ( 11, 12, 13 ); 

这可以显示供应商1与11,12和/或13的关系。我想要的是显示1和11,2和12,3和13之间的关系。

到目前为止我想出的是:

SELECT supplier_id, 
       buyer_id 
FROM   relationships 
WHERE  ( supplier_id, buyer_id ) IN ( ( 1, 11 ), ( 2, 12 ), ( 3, 13 ) ); 

在关系数量有限的情况下,这实际上是完美的。现在的问题是记录的数量是几百个。在上述方法中逐个复制这些ID是非常耗时的。值得注意的是,Excel文件中的所有ID都排列在两列(SUPPLIER_ID, BUYER_ID)

是否有将此数据导入我的查询(不使用PL / SQL)?

1 个答案:

答案 0 :(得分:2)

如果您将Excel文件导入Temp_table,则可以执行以下操作:

SELECT supplier_id, 
      buyer_id 
FROM   relationships 
WHERE  (supplier_id , buyer_id ) IN 
(SELECT T1.supplier_id , T1.buyer_id FROM Temp_table T1);