与主键列不同的列

时间:2019-07-18 13:50:39

标签: sql distinct

在“选择”查询中添加主键列时,不同的列数有所不同

Supplier_payment_terms的唯一计数为110,但是在添加PK列时,该计数变为数千。

select distinct  supplier, unique_id from indirect_spend;

当在select中包含PK列时,我希望记录数为110。 Select必须仅包含供应商的unique_id。

3 个答案:

答案 0 :(得分:1)

“当在选择中包含PK列时,我希望记录数相同,为110”

那么您期望错了。 SELECT DISTINCT导致结果中出现的所有 都是不同的,即结果中没有重复的 。< / p>

此外。想象两行(供应商ID唯一ID)(1 2)和(1 5)。您说您只希望结果中有一行。系统将如何确定要传递两行中的哪一行?

答案 1 :(得分:0)

由于PK是唯一的,因此将其添加到不同的查询中将始终导致从表中选择所有行。 (因为所有行现在都变得唯一)

由于一个供应商有许多unique_id,您怎么知道想要哪个?

Id   Supplier
---  -----------
1    Supplier 1
2    Supplier 1
3    Supplier 1
4    Supplier 2
5    Supplier 2

为供应商1选择哪个ID?

答案 2 :(得分:0)

您可以使用聚合获取示例主键:

select supplier, min(unique_id), max(unique_id)
from indirect_spend
group by supplier;