如何在加入时复制项目

时间:2012-03-09 19:28:34

标签: join oracle11g

我有2张桌子。

TableA
ID | ColA | ColB
1  | asd  | x
2  | qwe  | z
3  | poi  | w

TableB
ID | ColC | ColD | ColE
1  | rty  | z    | 123
2  | fgh  | x    | 276
3  | rtyy | z    | 657

我正在使用这个SQL

SELECT bb.colc, aa.cola FROM tableA aa, tableb bb
WHERE aa.colb = bb.cold

获得此结果

Result
ID | ColA | ColC
1  | asd  | fgh
2  | qwe  | rty
3  | qwe  | rtyy

我知道这是正确的,但我怎么能不复制'qwe'行?

对我来说,TableB中使用的行无关紧要。

3 个答案:

答案 0 :(得分:0)

试试这个:

select tb1.colc, ta1.cola from (
  select max(id) id, max(colc) as colc, cold from tb
  group by cold
) tb1
join ta ta1 on ta1.colb = tb1.cold

请告诉我这是否符合您的预期。

答案 1 :(得分:0)

根据您的评论,您看起来只是想要:

   SELECT aa.id, aa.cola 
     FROM tableA aa
    WHERE aa.colB in (Select bb.cold from tableb bb);

这可能不是最有效的方法,但这是你要找的结果集吗?

答案 2 :(得分:0)

此查询将使用max函数为您选择一个COLC条目:

SELECT aa.id,
       aa.cola,
       Max(bb.colc),
  FROM tableA aa,
       tableb bb
 WHERE aa.colb = bb.cold
 GROUP BY aa.id,
          aa.cola;