簡體   English   中英

Mysql Distinct行2列

[英]Mysql Distinct rows 2 columns

我有一個查詢:

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

您不能執行“選擇DISTINCT”還是對您沒有幫助? 如果不能,您能否確切說出您希望桌子顯示的內容? 對於您是否仍然希望顯示返回“ 0”的行,我感到困惑。 您能給我更多信息嗎?

只需使用最小聚合函數,當您將結果集保持為0時

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

如果您要刪除最小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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM