Mysql join дает повторяющиеся строки - PullRequest
16 голосов
/ 15 июня 2011

У меня есть 2 таблицы, и я использую соединение, чтобы получить общие записи из этих 2 таблиц. Я использовал следующий запрос, но моя проблема в том, что я получаю записи в два раза. Запрос выглядит следующим образом

SELECT * FROM pos_metrics pm INNER JOIN pos_product_selling pps ON   
pm.p_id=pps.p_id WHERE pm.p_id='0' AND pps.pos_buying_id='0' AND pm.type=1

Таблица pos_metrics:
enter image description here

таблица pos_product_selling: enter image description here

Выход:

enter image description here

EDIT
Когда я пытался использовать GROUP BY и DISTINCT вместе, я не получаю дубликаты, но значение из второй таблицы повторяется. Любые другие решения?

Ответы [ 5 ]

14 голосов
/ 12 ноября 2015

Попробуйте что-то вроде этого

GROUP BY pos_product_selling.metrics
8 голосов
/ 15 июня 2011

попробуйте это:

SELECT DISTINCT * FROM ...
GROUP BY pm.metrics
5 голосов
/ 15 июня 2011

Добавьте первичный ключ в таблицу pos_metrics и введите его в таблицу pos_product_selling, затем выполните JOIN на основе первичного ключа, а также других критериев.Вы не получите эти дубликаты тогда.

Причина, по которой у вас есть дубликаты, заключается в том, что нет никакой возможности сделать уникальное сравнение для обеих таблиц на основе значения.

4 голосов
/ 15 июня 2011

Чтобы устранить дублирование, используйте следующее:

select distinct * from ...

Но я чувствую, что ваш вопрос касается чего-то другого - и вам нужно опубликовать конкретный код для получения дополнительной помощи.

1 голос
/ 15 июня 2011
SELECT * FROM pos_metrics pm, pos_product_selling pps
Where pm.p_id=pps.p_id AND pm.p_id='0' AND pps.pos_buying_id='0' AND pm.type=1

попробуйте запрос выше

...