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