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