[英]mysql select distinct value (and count the number of values)
我堅持形成一個MySQL查詢。 我有6個具有相似列的表。 在您要求它們分別更新和刪除之前; 以及數據量。
因此,要從多個表中獲取總和,我可以使用SELECT SUM(x)FROM(SELECT COUNT(value)as x etc)
為了獲得一個唯一的ID,我使用DISTINCT(value)。 現在,我需要將它們合並為2列查詢,因此我具有唯一的值和計數。
我的數據看起來像這樣,例如表格1表(乘以6):
till_no | fruit | vegetables
123 | apple | null
123 | apple | carrot
125 | apple | pear
124 | apple | null
我想要的是123 | 2、124 | 1、125 | 1
SELECT DISTINCT(y), SUM(a) FROM (
(SELECT till_no as y, (SELECT COUNT(till_no) FROM Shop1) as a FROM Shop1 c)
UNION (SELECT till_no as y, (SELECT COUNT(_till_no) FROM Shop2)
as a FROM Shop2 c)
) multipleTables
無需使用DISTINCT。 GROUP BY子句將代表您使用該子句。 您可以在下面的查詢中嘗試-
SELECT CONCAT(y, COUNT(y))
FROM (SELECT till_no as y FROM Shop1
UNION
SELECT till_no as y FROM Shop2
UNION
SELECT till_no as y FROM Shop3
UNION
SELECT till_no as y FROM Shop4
UNION
SELECT till_no as y FROM Shop5
UNION
SELECT till_no as y FROM Shop6) multiple tables
GROUP BY y
Ankit讓我走上了正確的道路。
解決方案是:
SELECT z, SUM(y)
FROM (SELECT ea as z, COUNT(ea) as y FROM table1 GROUP BY ea
UNION
SELECT ea as z, COUNT(ea) as y FROM table2 GROUP BY ea
UNION
SELECT ea as z, COUNT(ea) as y FROM table3 GROUP BY ea
UNION
SELECT ea as z, COUNT(ea) as y FROM table4 GROUP BY ea
UNION
SELECT ea as z, COUNT(ea) as y FROM table5 GROUP BY ea
UNION
SELECT ea as z, COUNT(ea) as y FROM table6 GROUP BY ea)
multipletables
GROUP BY y
解決方案的訣竅是將其分解為小步...邏輯上1 + 1肯定勝過47 + 126
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.