sql - 连接的不同计数结果

标签 sql select join count distinct

我有那个sql:

SELECT DISTINCT 
  count(KTT)
FROM 
  TRA.EVENT;

它返回给我的号码是 1901335。

现在我想使用 join 扩展 sql,如下所示:

SELECT DISTINCT 
  count(E.KTT)
FROM 
  TRA.EVENT E
LEFT JOIN TRA.TMP_BNAME TBN ON E.KTT = TBN.KTT_DEF;

但这里我得到的结果是 1942376。

我不明白为什么?我还期望结果为 1901335。我认为我可以根据 EVENT 的条目轻松加入来自 TBN 的值?

编辑

SELECT DISTINCT 
  E.KTT,
  TB.B_BEZEICHNER
FROM 
  TRA.EVENT E
LEFT JOIN TRA.TMP_BNAME TBN ON E.KTT = TBN.KTT_DEF
LEFT JOIN TRA.TMP_B TB ON TBN.B_ID = TB.B_ID;

我做错了什么?

感谢您的帮助。 斯特凡

最佳答案

您尚未提供完整的详细信息,因此请将这些评论视为一般评论。

当您连接 2 个表时,可能会从一个表创建“重复”行。在您的实例中,TRA.TMP_BNAME 表中可能有超过 1 条记录具有相同的 KTT_DEF。当您将其连接到 TRA.EVENT 表时,它会为 TRA.EVENT 表中的每条原始记录创建多个记录。

您可以选择从 TRA.EVENT 中计算 KTT 的不同值并使用 DISTINCT 关键字,但您需要将其放入COUNT:选择计数(DISTINCT E.KTT)。只要您的值(value)观实际上是独一无二的,这就会起作用。如果不是,计数将与第一个查询不同。

关于sql - 连接的不同计数结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20741760/

相关文章:

mysql - 对 bookid 的 SQL 查询

php - 我可以对这段代码进行 SQL 注入(inject)吗?

c# - ?? sql中的运算符

mysql - 根据日期获取 MySQL 中的最新行(按另一列分组)

jquery - 从表单中的所有选择元素中获取所有选定的选项元素

mysql - 如何获取与另一列相关的行数?

java - 按列将数据插入 PostgreSQL 中的行

php - MySQL - 两个表查询,带有 SUM

MySQL 只获取一列一次

mysql - Yii v1 Left Join 给出 CDbException