【问题标题】:Oracle how to use distinct command in joinOracle如何在join中使用不同的命令
【发布时间】:2017-11-02 12:22:31
【问题描述】:

我试图从一个列中获取不同值的列表,同时通过另一个表上的内部连接获取键列数据,如下所示..表 a 和表 b 保存客户端的键列。 表 b 包含列 product,该列具有针对一系列客户编号的值范围

表 a 只保存客户编号

表 b 保存客户编号和产品

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

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

【问题讨论】:

  • 请详细说明您的问题。
  • Select Distinct B.Client, B.Product From A INNER JOIN B on A.Client=B.Client 但是,MCVE(最小完整可验证示例)会很有用。显示示例数据、您尝试过的内容以及预期的结果。我们可能不理解这个问题。
  • 有什么问题在:select distinct product from a join b using (client)?

标签: oracle join distinct


【解决方案1】:

在表格中找到客户所在的不同产品值的列表 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
;

另一种方法是使用group by,另外一种方法是使用group by,它还可以对客户在A 和B 中的产品进行不同的列表,这样您可以做一些额外的事情,例如计算产品被引用的频率。

试试SQLFiddle.com

【讨论】:

  • 您的问题现在解决了吗?你对这个答案还有疑问吗?要接受答案“Click the Tick”了解更多信息,请参阅help/accepting
猜你喜欢
  • 2020-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-13
  • 1970-01-01
  • 2012-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多