我有一个查询:

SELECT p.productid, p.dupproductid
FROM products p, categories c
WHERE c.catid = p.catid && (c.parent IN(2257) || p.catid = 2257)
GROUP BY p.productid


返回:

productid dupproductid
23423     0
54345     0
34234     33333
23423     33333
45345     0
34324     11111
46546     0


除了0之外,我只希望获得唯一的dupproductid,所以我不能使用GROUP BY

我希望它回来

productid dupproductid
23423     0
54345     0
34234     33333
45345     0
34324     11111
46546     0

最佳答案

如果您要删除最小ID,那么这对您有用-

SELECT p.productid, p.dupproductid
FROM (SELECT p.productid
            ,p.dupproductid
            ,ROW_NUMBER() OVER(PARTITION BY dupproductid ORDER BY productid DESC) as RN
      FROM products p, categories c
      WHERE c.catid = p.catid && (c.parent IN(2257) || p.catid = 2257)
      ) T
WHERE T.productid = 0
OR RN = 1


SQL小提琴为您-
http://www.sqlfiddle.com/#!18/db18b/2

关于mysql - Mysql Distinct行2列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51174609/

10-12 07:16