【问题标题】:How to put GROUP BY in sql statement?如何将 GROUP BY 放入 sql 语句中?
【发布时间】:2014-05-15 01:38:55
【问题描述】:
 $strSQL = "SELECT * FROM user, education, preference, additional, experience
        WHERE

        user.user_idx = education.edu_user AND 
        education.edu_user = preference.pref_user AND 
        preference.pref_user = additional.add_user AND 
       additional.add_user = experience.exp_user AND "
     .$user_sql_join.$edu_sql_join.$pref_sql_join.$add_sql_join.$exp_sql_join.$select_none_sql;

我不知道如何在以下 SQL 语句中包含 GROUP BY。请帮我弄清楚这一点。我正在使用JOIN STATEMENT 执行搜索功能。

【问题讨论】:

  • 我假设 php 变量具有指示 JOIN 的文本?您是否尝试过简单的“GROUP BY xxx”,其中 xxx 是列名。尽管我看到您没有列出列,而是选择了所有列。如果您有一些相同的名称,您可能会因为列名不明确而出现错误。在这种情况下,xxx 可能必须是 y.xxx,其中 y 是表名。
  • 试图在不知道最后一行内容的情况下回答这个问题似乎很荒谬。但是由于您不包含聚合函数,因此 GROUP BY 似乎与手头的问题无关。

标签: php mysql sql join group-by


【解决方案1】:

您只能在查询末尾添加 GROUP BY 并使用您在 SELECT 之后指定的字段。你不能和SELECT * ...一起使用它

例如——

SELECT user.user_idx FROM user, education, preference, additional, experience
        WHERE

        user.user_idx = education.edu_user AND 
        user.user_idx= preference.pref_user AND 
        preference.pref_user = additional.add_user AND 
       additional.add_user = experience.exp_user 
GROUP BY user.user_idx

此查询将按user.user_idx 字段对结果进行分组

【讨论】:

    【解决方案2】:

    得到user.user_idx的hte结果

    SELECT user.user_idx FROM user, education, preference, additional, experience
            WHERE
    
            user.user_idx = education.edu_user AND 
            user.user_idx= preference.pref_user AND 
            preference.pref_user = additional.add_user AND 
           additional.add_user = experience.exp_user 
    GROUP BY user.user_idx
    

    【讨论】:

      【解决方案3】:

      您需要某种形式的聚合,例如 SUM() AVG() MAX() 等才能使用 GROUP BY。 例如

      SELECT COUNT(user.user_idx) FROM user, education, preference, additional, experience
      WHERE
      user.user_idx = education.edu_user AND 
      education.edu_user = preference.pref_user AND 
      preference.pref_user = additional.add_user AND 
      additional.add_user = experience.exp_user
      GROUP BY education.edu_idx
      

      假设 user_idx 和 edu_id,这将为您提供每个 education.edu_idx 的用户计数

      如果没有聚合,GROUP BY 不会做很多事情:如果您没有聚合,您可能应该尝试排序。即使用 SORT BY

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-26
        • 1970-01-01
        • 2012-11-23
        • 2021-08-26
        • 2020-04-01
        • 2016-01-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多