已找到ID的SQL SELECT查询

时间:2019-01-02 09:16:34

标签: sql select

我有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的结果受到影响。

3 个答案:

答案 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上的第一个查询。