我有2张桌子: 表A有3列(例如),其中包含机会销售标题数据:
OPP_ID, CLOSE_DTTM, STAGE
表B中有3列,其中包含针对商机的单独订单项:
OPP_LINE_ID, OPP_ID, AMOUNT_USD
我有一条select语句,可以正确地解析表A并返回机会列表。我想做的是不加入数据,以拥有一条SELECT语句,该语句将从表B中获得数据,但仅适用于在我的第一个查询中找到的OPP_ID。
结果应该是2个视图/结果集(每个选择查询一个),而不仅仅是将表B连接到表A的1个组合视图。
我想将它们分开的原因是因为我将不得不对表B的结果执行一些操作,而我不希望表A的结果受到影响。
答案 0 :(得分:1)
子查询就是您所需要的
SELECT OPP_ID, CLOSE_DTTM, STAGE
From table a
where a.opp_id IN (Select opp_id from table b)
答案 1 :(得分:0)
假设您正在某个客户端数据访问库中使用此代码,该库在某些二维集合中表示B的数据,并且您想要对其进行操作而不会影响/在该集合中存在A的数据:
标识A中的记录:
SELECT * FROM a WHERE somecolumn = 'somevalue'
标识B中与A相关的记录,但不返回A的数据:
SELECT b.* FROM a JOIN b ON a.opp_id = b.opp_id WHERE a.somecolumn = 'somevalue'
仅仅因为使用了JOIN并不意味着您的最终用户程序必须知道A的数据。您也可以像其他答案一样使用IN,但是在内部数据库无论如何都会将它们重写为相同的东西
答案 2 :(得分:0)
对于这种类型的查询,我倾向于使用exists
:
select b.*
from b
where exists (select 1 from a where a.opp_id = b.opp_id);
如果要两个结果集,则需要运行两个查询。尚不清楚第二个查询是什么,也许是A
上的第一个查询。