如何计算多个表的行大小

m1m5dgzv  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(227)

在mysql中,我有三个表:

A:
-----------------
|g_id  | txt    |
|------|--------|
|   1  |  cat   | 
|   3  |  dog   |

B:
--------------------------
|g_id  | txt     | txt2  |
|------|---------|--------
|   1  |  hat    |  chat  |
|   3  |  that   |  NULL |
|   3  |  that   |  NULL |

C:
------------------
|g_id  | txt     |
|------|---------|
|   1  |  hat    | 
|   1  |  mat    | 
|   3  |  that   |

我的目标是汇总表a、b和c中每一行的txt列,按g\ id分组。。。
因此,在我的查询之后,预期结果将是:

----------------
|g_id  | size  |
|------|-------|
|   1  |  16   | 
|   3  |  15   |

我的查询失败:

SELECT 
   g_id,
   SUM(length(txt)) + SUM(length(txt2) as size
   FROM ((SELECT a.g_id, a.txt FROM a) UNION ALL
      (SELECT b.g_id, b.txt, b.txt2 FROM b) UNION ALL
      (SELECT c.g_id, c.txt FROM c) 
   ) abc
GROUP BY g_id;

错误:使用的select语句的列数不同

ttp71kqs

ttp71kqs1#

使用 union all 而不是 join :

SELECT g_id,
       SUM(length(txt)) as size
FROM ((SELECT a.g_id, a.txt FROM a) UNION ALL
      (SELECT b.g_id, b.txt FROM b) UNION ALL
      (SELECT c.g_id, c.txt FROM c) 
     ) abc
GROUP BY g_id;

相关问题