#sql #sql-server
#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
.
.
Как я могу справиться с этим на уровне запроса?
Комментарии:
1. Каков первичный ключ для вашего
Table2
?
Ответ №1:
использовать distinct
select distinct t1.*,t2.productid
from table1 t1 join table2 t2 on t1.Template_ID =t2.Template_ID
Комментарии:
1. @SyAu создать скрипту, а не текст dbfiddle.uk /…
Ответ №2:
Используйте DISTINCT
для устранения дубликатов. Это относится не только к первому столбцу, но и ко всей строке.
Например:
select distinct t1.customer_id, t1.template_id, t2.product_id
from t1
join t2 on t2.template_id = t1.template_id
Ответ №3:
Вам просто нужно, чтобы GROUP BY
поле, которое вы хотите сделать уникальным, поэтому Product_ID:
SELECT Customer_ID, Template_ID, Product_ID
FROM table1
JOIN table2 using ( Template_ID )
GROUP BY Product_ID;
Ответ №4:
Пожалуйста, попробуйте это.
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