我的数据库中有2个表,假设t1和t2。 两者都有2行。 1s是ID,第二个是Name
Table t1:
Id. Name
1. abc
2. def
3. ghi
Table t2:
Id. Name
1. abc
2. abc
3. abc
4. def
4. def
现在,我在MySQL中需要这种类型的输出
Total. Name
3. abc
2. def
0. ghi
到目前为止,我已经尝试过
Select Count(*) as Total, Name
from t1 Inner Join
t2
Group By t2.Name
Having t1.Name = t2.Name
答案 0 :(得分:0)
只需执行LEFT JOIN
和聚合:
SELECT COUNT(t2.id), as total t1.name
FROM t1 LEFT JOIN
t2
ON t2.name = t1.name
GROUP BY t1.name;
答案 1 :(得分:0)
SELECT COUNT(t2.Id) as Total, t1.Name
FROM t1 LEFT JOIN t2
ON t2.Name = t1.Name
GROUP BY t1.Name;
与Yogesh相同的答案,但是正确设置了逗号和上限。
关于您所做的选择
Select Count(*) as Total, Name
from t1 Inner Join
t2
Group By t2.Name
Having t1.Name = t2.Name
这是我的2美分
1st。),因为有两个具有相同列的表,您将收到模棱两可的列错误,因此您必须编写“ t1.Name”,而不仅仅是“ Name”
2nd。),并使用INNER JOIN选择始终,并且仅选择两个表中存在的行,这些行与联接的ON部分中的字段链接
3rd。)和HAVING子句不是将表链接在一起的适当方法,仅使用完整的JOIN语法以及ON和相应字段
希望能有所帮助。