在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 |
我的目标是汇总按g_id分组的表A,B和C的每一行的txt列...
因此,查询之后,预期结果将是:
----------------
|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语句的列数不同
答案 0 :(得分:2)
使用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;