【问题标题】:How can I solve this mysql error after upgrade升级后如何解决这个mysql错误
【发布时间】:2019-11-24 14:34:26
【问题描述】:

我从 Godaddy 升级到蓝色主机,现在出现此错误:

语法错误或访问冲突:1055 SELECT 列表的表达式 #2 不在 GROUP BY 子句中,并且包含在功能上不依赖于 GROUP BY 子句中的列的非聚合列“customeTable.fromuser”;这与 sql_mode=only_full_group_by' 不兼容

$statement = $db->prepare("SELECT * FROM(SELECT DISTINCT(thread_id) AS 
thread_id, fromuser, touser, aDeleted, bDeleted, avatar, message, seen, 
time FROM conversations WHERE fromuser=:username AND bDeleted=0 OR 
touser=:username AND aDeleted =0 ORDER BY time DESC) customeTable GROUP 
BY thread_id ORDER BY time DESC");

$statement->bindParam("username", $username, PDO::PARAM_STR) ;
$statement->execute();

【问题讨论】:

标签: mysql group-by aggregate-functions mysql-5.7


【解决方案1】:

要修复查询,请查看以下内容:

  • 查询有一个GROUP BY-clause 没有任何聚合函数(你应该删除它)。见documentation
  • DISTINCT修饰符不是函数。它会删除所有列上的重复行
  • 由于查询混合了ANDOR,它应该使用括号,否则您可能会得到意想不到的结果
  • 子查询不需要,可以去掉

【讨论】:

    猜你喜欢
    • 2021-02-22
    • 1970-01-01
    • 2012-06-17
    • 2018-12-27
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多