Mysql不同行2列

标签 mysql

我有一个问题:

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 Fiddle - http://www.sqlfiddle.com/#!18/db18b/2

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

相关文章:

MySQL数据库设计: User and event table

php - 未定义索引 PHP

MySQL - 加入同一张表两次

php - SQL查询同一个表中的多个值和多个键

php自定义数据库接口(interface)类-未选择数据库

php - 更快的 MySQL 加入 DISTINCT 记录

PHP MySQL UPDATE 语句不工作

php - Codeigniter 路线和语言标识符

mysql - 在 JOIN 中使用具有 'AS' 的字段的指定名称

mysql - 从 MySQL 数据库中检索数据