【发布时间】:2020-04-04 15:19:24
【问题描述】:
我有一个包含 3 列和这些值的表:
col1 col2 col3
-------------------
1 2 8
1 3 5
1 10 15
2 4 6
2 9 7
3 5 6
我加入一个查询 LEFT JOIN 和 RIGHT JOIN 一个分组和计数查询 每个号码(MS-ACCESS)。
SELECT Col1 AS Num, t1.CON1, t2.CON2, t3.CON3
FROM
(((SELECT col1, COUNT(col1) AS CON1 FROM table GROUP BY col1) AS t1
LEFT JOIN (SELECT col2, COUNT(col2) AS CON2 FROM table GROUP BY col2) AS t2
ON t1.col1 = t2.col2)
LEFT JOIN (SELECT col3, COUNT(col3) AS CON3 FROM table GROUP BY col3) AS t3
ON t2.col2 = t3.col3)
UNION
SELECT col3 AS Num, t1.CON1, t2.CON2, t3.CON3
FROM
(((SELECT col1, COUNT(col1) AS CON1 FROM table GROUP BY col1) AS t1
RIGHT JOIN (SELECT col2, COUNT(col2) AS CON2 FROM table GROUP BY col2) AS t2
ON t1.col1 = t2.col2)
RIGHT JOIN (SELECT col3, COUNT(col3) AS CON3 FROM table GROUP BY col3) AS t3
ON t2.col1 = t3.col3)
结果如下:
Num CON1 CON2 CON3
--------------------------
1 3
2 2 1
3 1 1
5 1 1
6 2
7 1
8 1
15 1
但此查询忽略了表第 2 列中的值计数
Num CON2
---------------
4 1
9 1
10 1
我的查询中缺少什么?
【问题讨论】:
-
你想在这里实现什么?您的最终预期输出是什么?
-
CON2 列的值(4、9、10)的计数在最终结果中缺少积分..
-
请通过编辑而非 cmets 进行澄清。请不要大喊大叫。请在代码问题中给出minimal reproducible example--cut & paste & runnable code,包括最小的代表性示例输入作为代码;期望和实际输出(包括逐字错误消息);标签和版本;明确的规范和解释。给出您可以给出的最少代码,即您显示的代码可以通过您显示的代码扩展为不正常。 (调试基础。)对于包含 DBMS 和 DDL(包括约束和索引)和输入为格式化为表的代码的 SQL。 How to Ask 说输出是输入的函数。不要希望我们猜测。
标签: sql ms-access left-join right-join