内部联接使用COUNT(*)

时间:2012-03-26 19:18:03

标签: php mysql join

我从MySQL数据库中选择用户信息,如下所示:

SELECT * FROM `Users` WHERE `$user_or_id` = ?

但是,我想在返回的数据中添加一些额外的信息。额外的数据是名为“Venues”的表中的记录总数,其中行的字段“user_id”与表中的“id”字段“用户”相同。

请告诉我以下查询出错的地方?这是我收到的错误:

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近'*)FROM Users AS u INNER JOIN Venues AS v ON u.id =   v.user_id WHERE u.id =''在第1行

SELECT u.*, v.count(*) FROM `Users` AS u INNER JOIN `Venues` AS v ON u.id = v.user_id WHERE u.$user_or_id = ?

3 个答案:

答案 0 :(得分:3)

SELECT u.*, COUNT(v.*) FROM `Users` AS u INNER JOIN `Venues` AS v ON u.id = v.user_id WHERE u.$user_or_id = ?

COUNT是MySQL函数,不是表v的成员。传递一个代表你想要计数的参数 - 在这种情况下,v的行。

答案 1 :(得分:1)

应该是COUNT(v.*)。否则它被解释为“表V中的函数计数”,这是无效的。

答案 2 :(得分:1)

只需使用count(*)代替v.count(*)