簡體   English   中英

MySQL查詢從多個列計數

[英]Mysql query to count from multiple columns

我有這樣的SQL查詢:

SELECT
   CONCAT(t1.a, t2.a, t2.b, t3.a, t4.a, t4.b) AS val
FROM
   t1 
   LEFT JOIN t2 ON ...
   LEFT JOIN t3 ON ...
   LEFT JOIN t4 ON ...

val輸出為:0,1,0,1,2,1或1,2,0,1,0,2,...(以隨機順序包括0,1,2)

我想對每個數字進行總計,如:0 => 2、1 => 3、2 => 1,不帶PHP代碼

您可以簡單地將現有查詢包裝在子查詢中,然后進行外部查詢以計算發生的次數。

SELECT 
  LENGTH(val) - LENGTH(REPLACE(val, '0', '')) zeros,
  LENGTH(val) - LENGTH(REPLACE(val, '1', '')) ones,
  LENGTH(val) - LENGTH(REPLACE(val, '2', '')) twos
FROM (
  SELECT
    CONCAT(t1.a, t2.a, t2.b, t3.a, t4.a, t4.b) AS val
  FROM
    t1 
    LEFT JOIN t2 ON ...
    LEFT JOIN t3 ON ...
    LEFT JOIN t4 ON ...
);

您需要為此使用UNION ALL

SELECT tbl.col1, COUNT(tbl.col1)
FROM (
  SELECT t1.a as col1
    FROM t1
  UNION ALL
  SELECT t2.a as col1
    FROM t2
  UNION ALL
  SELECT t3.a as col1
    FROM t3
   ...
) tbl
GROUP BY tbl.col1;

SQLFIDDLE演示

暫無
暫無

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

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