簡體   English   中英

如何從子查詢中獲取UNIQUE數?

[英]How to get UNIQUE count from subquery?

這是查詢:

    SELECT count(a.id) as itemCount, 
           concat(a.firstname, ' ', a.lastname) as name, 
           oi.status, a.id as adminID, 
           (SELECT count(a.id) as oldItemsCount 
                   FROM bl_orderitems oi, 
                        bl_researcher r,             
                        tbladmins a 
                   WHERE oi.status='Pending' AND 
                         r.id=oi.researcherid AND 
                         r.researchermanagerid=a.id AND
                         DATE(oi.regdate)=DATE_SUB(CURDATE(), INTERVAL 3 DAY))
                   as oldItemCount
    FROM bl_orderitems oi, 
           bl_researcher r,
           tbladmins a 
    WHERE oi.status in ('Pending', 'QA') AND
           r.id=oi.researcherid AND 
           r.researchermanagerid=a.id 
    GROUP BY 
          name, adminID, oi.status;

此查詢應返回如下內容:

 itemCount    name            status    adminID  oldItemCount 
    5         John McKay      Pending      20        125
    15        Clown Ho        QA           12        125
    39        Jack Fell       Pending      13        125
    5         Mark Grunigen   Pending       2        125
    1         Kim Jun Li      QA            2        125
    206       Abama Oladen    Pending       4        125

雖然我正在嘗試實現它,但它返回UNIQUE oldItemCount。

oldItemCount應該是count(a.id)套件“ DATE(oi.regdate)=DATE_SUB(CURDATE(), INTERVAL 3 DAY))

如果我在子查詢上嘗試DISTINCT,它說Operand should contain 1 column(s)

您要找的是COUNT(DISTINCT)

編輯:根據你的意見,你應該嘗試這樣的事情:

SELECT count(DISTINCT oi.id) as itemCount, 
       concat(a.firstname, ' ', a.lastname) as name, 
       oi.status, a.id as adminID, 
       (SELECT count(oi2.id) as oldItemsCount 
               FROM bl_orderitems oi2, 
                    bl_researcher r2
               WHERE oi2.status='Pending' AND 
                     r2.id=oi.researcherid AND 
                     r2.researchermanagerid=a.id AND
                     DATE(oi2.regdate)=DATE_SUB(CURDATE(), INTERVAL 3 DAY))
               as oldItemCount
FROM bl_orderitems oi, 
       bl_researcher r,
       tbladmins a 
WHERE oi.status in ('Pending', 'QA') AND
       r.id=oi.researcherid AND 
       r.researchermanagerid=a.id 
GROUP BY 
      name, adminID, oi.status;

它更簡單,可能符合您的需求。

暫無
暫無

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

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