有人可以帮助解决这种复杂的情况吗
我有两个表
Table1:
id | status
----------------
1 | New
2 | New
3 | Pending
table2在哪里
表 2:
id | table1_id
---------------
1 | 1
2 | 1
3 | 1
4 | 2
5 | 2
6 | 2
7 | 3
8 | 3
我正在尝试提取状态值,所以尝试使用简单的方法
SELECT t1.status FROM table1 t1 LEFT OUTER JOIN table2 t2 ON t1.id=t2.table1_id
给出结果
New
New
New
我不能使用 distinct,因为我在计算,有什么办法可以避免重复吗?
对于 case 语句,我需要这样的结果
id | New | Pending
---------------------
1 | 1 | 0
2 | 1 | 0
3 | 0 | 1
现在得到
id | New | Pending
---------------------
1 | 3 | 0
2 | 3 | 0
3 | 0 | 2
最佳答案
SELECT DISTINCT t1.status
将为您提供不同的值。但是,由于您不想使用 DISTINCT
,您可以添加 GROUP BY t1.status
它与 DISTINCT
相同:
SELECT t1.status, COALESCE(COUNT(DISTINCT t2.table1_id), 0) AS total
FROM table1 t1
LEFT OUTER JOIN table2 t2 ON t1.id=t2.table1_id
GROUP BY t1.status;
但这种方式 GROUP BY
仅对不同的值无用,最好使用 DISTINCT
。
关于mysql - 右外连接避免重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20328282/