Oracle如何在join中使用distinct命令

时间:2017-11-02 12:22:31

标签: oracle join distinct

我正在尝试从一列中获取不同值的列表,同时通过另一个表上的内部联接获取键列数据,如下所示。表a和表b保存客户端的键列。 表b包含列产品,其具有一系列值与一系列客户编号

表a仅包含客户端数据

表b包含客户编号和产品

Client       product
1.                A
1.                  B
2.                  B
3.                   C

我想找到客户在表a和表b中的不同产品值列表 欢迎任何建议

1 个答案:

答案 0 :(得分:0)

  

查找客户端在表中的不同产品值的列表   a和表b

正如您将在下面注意到的那样" distinct"没有在联接中应用

SELECT DISTINCT
      b.Product
FROM TABLEA a
INNER JOIN TABLEB b ON a.Client = b.Client
;

内连接确保客户端同时存在于A和B中,然后选择"选择不同的"删除产品列表中的任何重复。

SELECT
      b.Product
    , COUNT(*) AS countof
FROM TABLEA a
INNER JOIN TABLEB b ON a.Client = b.Client
GROUP BY
      b.Product
;

另一种选择,它也会使客户在A和B中的产品清单明确地使用group by,还有额外的好处,这样你可以做一些额外的事情,比如计算产品的频率引用。

SQLFiddle.com

尝试