簡體   English   中英

mysql選擇不同的值(並計算值的數量)

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

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