我有一个带有两个表的mysql数据库:
db.names
name | Level
------------
bob 4
john 3
andy 2
dave 1
db.data
entry | user
------------
dfds bob
hdes bob
sers john
iuid dave
yyuy john
我正在尝试计算每个用户已经制作了多少次并且还显示了他们的等级。光线看起来像这样:
count(*) | user | Level
-----------------------
2 bob 4
2 john 3
1 dave 1
我尝试使用左连接和不同连接,但似乎可以掌握逻辑。帮助将非常感激
答案 0 :(得分:4)
您需要使用INNER JOIN
基本上加入表,因为您只想显示两个表上都存在的记录。要计算实例数,您需要使用聚合函数COUNT()
和GROUP BY
子句。
SELECT COUNT(*) TotalCount,
a.Name,
a.Level
FROM names a
INNER JOIN data b
ON a.Name = b.user
GROUP BY a.Name, a.Level
要进一步了解联接,请访问以下链接:
输出
╔════════════╦══════╦═══════╗
║ TOTALCOUNT ║ NAME ║ LEVEL ║
╠════════════╬══════╬═══════╣
║ 2 ║ bob ║ 4 ║
║ 2 ║ john ║ 3 ║
║ 1 ║ dave ║ 1 ║
╚════════════╩══════╩═══════╝