SQL-选择仅在SQL的一个字段中没有重复的记录?

时间:2019-03-26 11:55:40

标签: sql sql-server

表1


| Customer_ID | Template_ID  
---------------------
| C1   |  T1   |    
| C1   |  T2   |    

---------------------

表2

---------------------
| Template_ID | Product_ID  
---------------------
| T1   |  P1   |    
| T1   |  P5   |    
| T1   |  P5   |    

| T2    |  P10   |    
| T2    |  P45   |    

预期的加入查询结果:

------------------------------------------
| Customer_ID | Template_ID  | Product_ID  
------------------------------------------
| C1          |  T1          |  P1
| C1          |  T1          |  P5

| C1          |  T2          |  P10
| C1          |  T2          |  P45

.
.

对于模板,我只想像上面那样获得唯一的Product_ID。目前,我的查询返回的P5两次,

.
.
| C1          |  T1          |  P5
| C1          |  T1          |  P5
.
.

如何在查询级别处理此问题?

4 个答案:

答案 0 :(得分:0)

使用不同的

  select distinct t1.*,t2.productid
  from table1 t1 join table2 t2 on t1.Template_ID  =t2.Template_ID  

答案 1 :(得分:0)

使用DISTINCT消除重复项。它不仅适用于第一列,而且适用于整行。

例如:

select distinct t1.customer_id, t1.template_id, t2.product_id
from t1
join t2 on t2.template_id = t1.template_id

答案 2 :(得分:0)

您只需GROUP BY您要唯一的字段,因此Product_ID:

SELECT Customer_ID,  Template_ID, Product_ID
FROM table1
JOIN table2 using ( Template_ID )
GROUP BY Product_ID;

答案 3 :(得分:0)

请尝试这个。

SELECT 
    DISTINCT A.Customer_ID ,A.Template_ID  ,B.Product_ID   
FROM 
    table1 AS A
INNER JOIN table2 AS B
ON A.Template_ID   = B.Template_ID