【问题标题】:Inner Join using COUNT(*)使用 COUNT(*) 的内部联接
【发布时间】:2025-12-10 19:35:02
【问题描述】:

我正在从我的 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 = ?

【问题讨论】:

  • 可能是count(v.*)(如果可能的话)。
  • 你必须使用 GROUP BY 语句

标签: php mysql join


【解决方案1】:
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 的行。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      只需使用count(*) 而不是v.count(*)

      【讨论】: