【问题标题】:MySQL error "Expression #1 of ORDER BY clause is not in GROUP BY clause"MySQL 错误“ORDER BY 子句的表达式 #1 不在 GROUP BY 子句中”
【发布时间】:2017-05-04 12:12:44
【问题描述】:

我正在尝试从表中获取记录总数并使用以下 MySQL 查询:

SELECT COUNT(*) AS cnt FROM `info` WHERE 1 GROUP BY FROM_UNIXTIME(signup_date, '%Y-%m-%d') ORDER BY signup_date DESC

但它会导致以下错误:

SQL 错误 (1055):ORDER BY 子句的表达式 #1 不在 GROUP BY 子句中,并且包含非聚合列“rentown.info.signup_date” 它在功能上不依赖于 GROUP BY 子句中的列; 这与 sql_mode=only_full_group_by 不兼容。[SELECT COUNT() AS cnt FROM info WHERE 1 GROUP BY FROM_UNIXTIME(signup_date, '%Y-%m-%d') ORDER BY signup_date DESC]

这是我的表格格式:

+ Options
    id  email   signup_date     ip  city_name   firstname   address     state   lastname    city    zipcode     phonenumber     current_url     creditscore
    4   kfct@yahoo.com  1388525440  108.200.78.136  Philadelphia, PA    Kathy   1915 Apex Ave #1/4  California  Yeung   Los Angeles     90039   310 890 3338    NULL    NULL
    10  mlh@gmail.com   1388884727  98.199.141.66   Dickinson, TX   Mackenzie   102 strand  Texas   Helms   Galveston   77550   409 599 8024    NULL    NULL
    11  mjma@yahoo.com  1388889053  99.190.210.155  Grand Prairie, TX   samathiis   1701 towne crossing blvd #731   Texas   ashley  mansfield   76063   817 210     NULL    NULL

【问题讨论】:

标签: php mysql mysql-error-1055


【解决方案1】:

错误消息是不言自明的。您只能按出现在GROUP BY 子句或聚合中的列进行排序。为了快速修复,只需按照分组时使用的相同术语进行排序。

SELECT COUNT(*) AS cnt
FROM `info`
GROUP BY FROM_UNIXTIME(signup_date, '%Y-%m-%d')
ORDER BY FROM_UNIXTIME(signup_date, '%Y-%m-%d') DESC

【讨论】:

    【解决方案2】:

    对于记录的总数,这应该足够了:

    SELECT COUNT (*) AS cnt
    FROM 'info'
    ORDER BY signup_date DESC
    

    【讨论】:

      猜你喜欢
      • 2018-03-23
      • 2018-06-12
      • 1970-01-01
      • 1970-01-01
      • 2016-12-06
      • 2017-06-22
      • 1970-01-01
      • 2017-12-07
      相关资源
      最近更新 更多