MySQL组合数据+计数(*)查询FROM 2表

时间:2012-02-17 00:40:38

标签: mysql select

我需要查询帮助。我有一个'成员'表和'评论'表。

members:  userid,name,bday  etc...
comments: id,userid,message,rel  etc...

直到现在我对membersdata和commentsCount使用了2个查询,并在PHP中结合使用。

我的问题。是否有可能只在一个查询中同时获得两者(所有来自成员和评论的数量)?

这不是工作......

SELECT members.*, count(comments.*) as count 
FROM members, comments 
WHERE members.userid=comments.userid 
group by members.userid

有人知道其他解决方案吗?

2 个答案:

答案 0 :(得分:2)

以下是您的查询的清理版本,假设您希望每个版本都有useridnumber of comments

SELECT members.userid, count(*) as count 
FROM members
INNER JOIN comments 
ON members.userid = comments.userid 
GROUP BY members.userid

我提出的问题:

  1. 仅选择group by子句中的列,或者应用聚合函数。选择不满足这些标准的列是不正确的(虽然MySQL允许你这样做)
  2. 将显式连接替换为隐式连接,并将连接条件从where子句移至on子句
  3. select ... count(comments.*)替换为select ... count(*)count(*)工作得很好

答案 1 :(得分:0)

谢谢马特 我用过你的版本。我正在通过sql-joins学习。

我的代码的问题是'count(comments。*)'。 Mysql不喜欢这个!

这是有效的:

SELECT members.*, count(comments.rel) as count 
FROM members, comments 
WHERE members.userid=comments.userid 
group by members.userid