[英]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.