Как вернуть дубликаты в таблице, которые имеют то же значение в другом столбце в MySQL? - PullRequest
0 голосов
/ 12 декабря 2018

Как бы я вернул ProductNumbers, если номер дублирован, если он имеет тот же год?Это все в одной таблице.в этом примере ниже, я ожидаю, что ProductNumber 123 и 456 будут возвращены.Объясните рассуждения, если это возможно, спасибо!

ProductNumber   Numb     Year
123             45        1
456             45        1
789             45        2
109             54        2

Ответы [ 3 ]

0 голосов
/ 12 декабря 2018

Вы можете использовать EXISTS():

SELECT * 
FROM Table T1
WHERE EXISTS
(
    SELECT 1 
    FROM 
        (SELECT Numb ,Year 
        FROM Table
        GROUP BY Numb
                ,Year 
        HAVING COUNT(1)>1
        ) T2
    WHERE T1.Numb = T2.Tumb
      AND T1.Year = T2.Year
)
0 голосов
/ 12 декабря 2018

Вы также можете использовать INNER JOIN

SELECT t1.ProductNumber
FROM Products t1
INNER JOIN Products as t2
ON t1.ProductNumber != t2.ProductNumber
          AND t1.Numb = t2.Numb
          AND t1.Year = t2.Year
0 голосов
/ 12 декабря 2018

Вот один вариант использования exists:

select * 
from yourtable t
where exists (
    select 1
    from yourtable t2
    where t.productnumber != t2.productnumber 
          and t.numb = t2.numb
          and t.year = t2.year
    )

Используя exists, мы проверяем, есть ли другие записи в той же таблице, чьи productnumber отличаются, но имеют одинаковые numb и year значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...