【问题标题】:Combining two queries into one using Group By in MySQL在 MySQL 中使用 Group By 将两个查询合并为一个
【发布时间】:2011-06-15 16:34:17
【问题描述】:

目前,我正在尝试获取一个用户的所有提交以及特定提交的所有 cmets。我这样做的方式效率极低(在循环内查询)。

有人告诉我使用 Group By,但我不确定如何让它正常工作。

选择所有提交信息的第一个查询是:

SELECT
    submissions.user_id,
    submissions.id,
    submissions.quote,
    submissions.filename,
    submissions.date_added,
    submissions.views
FROM
    `submissions`
WHERE
    submissions.user_id = ?
ORDER BY
     submissions.date_added
DESC

第二个(获取评论数)是:

SELECT
    count(id) AS `comments`
FROM
    `comments`
WHERE
    submission_id = '{$subId}'

那些工作,但由于它们会变慢,所以我试图想出这个,但不知道如何正确执行它。

SELECT
    submissions.user_id,
    submissions.id,
    submissions.quote,
    submissions.filename,
    submissions.date_added,
    submissions.views,
    COUNT(comments.id) as `comment`
    comments.submission_id
FROM
    submissions
LEFT JOIN
    comments
ON
    submissions.id=comments.submission_id
WHERE
    submissions.user_id = ?
GROUP BY comment

关于如何解决这个问题的任何建议?我最初没有合并前两个查询的原因是因为 count 总是会为整个查询返回一行。

【问题讨论】:

  • 连接查询看起来不错。你试过运行它吗?请注意,其中的? 表示占位符参数,用于准备好的语句。您的原始版本进行了直接查询构建。
  • 我了解占位符。我正在使用带有准备好的语句的 PDO。至于那个查询,我收到以下错误:#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'comments.submission_id FROM submissions LEFT JOIN ' at line 9
  • 啊,很简单,你在COUNT(...) as ... 行后面少了一个逗号

标签: mysql sql count group-by


【解决方案1】:

试试这个(我刚刚根据您对错误的评论在comment 之后添加了一个逗号):

    SELECT
        submissions.user_id,
        submissions.id,
        submissions.quote,
        submissions.filename,
        submissions.date_added,
        submissions.views,
        COUNT(comments.id) as `comment`,
        comments.submission_id

    FROM
        submissions
    LEFT JOIN
        comments
    ON
        submissions.id=comments.submission_id
    WHERE
        submissions.user_id = ?
    GROUP BY submissions.user_id,
        submissions.id,
        submissions.quote,
        submissions.filename,
        submissions.date_added,
        submissions.views,
        comments.submission_id

【讨论】:

  • 哇,速度快得惊人。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多