sql—如何返回一个表中的重复项,这些重复项在mysql的另一列中共享相同的值?

szqfcxe2  于 2021-06-17  发布在  Mysql
关注(0)|答案(3)|浏览(333)

如果产品编号在同一年重复,我将如何返回产品编号?这些都在同一张table里。在下面的这个例子中,我希望productnumber 123和456被返回。如果可能的话解释一下原因,谢谢!

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

qlckcl4x1#

你可以用 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
)
lf5gs5x2

lf5gs5x22#

这里有一个选项 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 价值观。

gywdnpxw

gywdnpxw3#

也可以使用内部联接

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

相关问题